[英]Regex match but exclude
我在JavaScript中使用正则表达式遇到了麻烦。 我需要测试一个URL是否匹配此简单模式,并调用RegExp.prototype.test(value: string): boolean
方法。
我希望结果对于true
的URL为true
:
/somePath
/anyPath
/doesNotMatterWhatIsHere
我希望它对任何类似这样的路径返回false
:
/
/somePath/someWhereElse
/anyPath/1
/doesNotMatterWhatIsHere/pickle/chips/are/awesome
问题的关键是,如果它是根/path
我想true
,如果它是任何其他比这,我想false
。 请帮忙。
我一直在使用http://regexr.com/ 。
到目前为止,我的Regex是\\/.+[^\\/]
。
像^[^/]*/[^/]*$
?
或/^[^\\/]*\\/[^\\/]*$/
带定界符。
只要确保它以/
开头并且在其他任何地方都不包含/
var test1 = "/somePath"; var test2 = "/anyPath"; var test3 = "/doesNotMatterWhatIsHere"; var empty = "/"; var fail1 = "/somePath/someWhereElse"; var fail2 = "/anyPath/1"; var fail3 = "/doesNotMatterWhatIsHere/pickle/chips/are/awesome"; regex = /^[/]([^/]+)$/; console.log(regex.test(test1)); console.log(regex.test(fail1)); console.log(regex.test(empty));
要回答您的问题,此正则表达式将起作用: /^\\/[^\\/]*$/
。 它基本上检查第一个字符是/
,其余字符不是/
。
但是我怀疑您可能还想匹配"/somePath/"
,因为通常将尾部斜杠视为规范URL。
如果要这样做,此正则表达式将考虑斜杠:
/^\/[^\/]*\/?$/
它检查第一个字符是/
,其余字符不是/
,并且末尾是可选的/
。
var pattern=/^\\/[^\\/]+$/; console.info(pattern.test('/somePath')); console.info(pattern.test('/doesNotMatterWhatIsHere')); console.info(pattern.test('/somePath/someWhereElse')); console.info(pattern.test('/doesNotMatterWhatIsHere/pickle/chips/are/awesome'));
试试吧
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.