繁体   English   中英

正则表达式匹配但不包括

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM