正则表达式匹配但排除
我在正则表达式中有一些问题JavaScript。我需要测试一个URL是否匹配这个简单模式,调用RegExp.prototype.test(value: string): boolean
方法。正则表达式匹配但排除
我想要的结果是true
像这样的网址:
/somePath
/anyPath
/doesNotMatterWhatIsHere
而且我想它返回false
因为这是任何像这样的路径:
/
/somePath/someWhereElse
/anyPath/1
/doesNotMatterWhatIsHere/pickle/chips/are/awesome
问题的关键是,如果它是根/path
我想要true
,如果它不是这个,我想要false
。请帮忙。我一直在使用http://regexr.com/。
我的正则表达式我到目前为止,\/.+[^\/]
。
只要确保它开始与/
,并且不包含/
其他地方
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/"
,因为通常会将尾部斜线视为规范网址。
如果你想这样做,这正则表达式将采取斜线考虑:
/^\/[^\/]*\/?$/
它检查的第一个字符是一个/
,而其余字符不/
和最后可选/
。
这个表达式不正确地返回'true'只是'/'。我希望这是'假'。 –
为了将来的参考,请从一开始就清楚您的问题以防止沟通不畅。 –
我很清楚......但事情变了,我起初并没有考虑只有'/'的根。尽管谢谢你的回答。 –
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'));
尝试
我也想确保道路不单纯是一个斜杠,这正则表达式不正确地解释这一点。 'var test1 =“/”; //我希望这是错误的。 –
只要将'*'改成'+' –