我在 JavaScript 中使用 regex 时遇到了一些问题。我需要测试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/。
到目前为止我的正则表达式\/.+[^\/]
。
答案 0 :(得分:1)
可能是^[^/]*/[^/]*$
之类的东西?
或/^[^\/]*\/[^\/]*$/
带分隔符。
答案 1 :(得分:1)
请确保它以/
开头,并且其他地方不包含/
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));

答案 2 :(得分:0)
要回答您的问题,此正则表达式将起作用:/^\/[^\/]*$/
。它基本上检查第一个字符是/
,其余字符不是/
。
但我怀疑您可能还希望匹配"/somePath/"
,因为将尾随斜杠视为规范网址是很常见的。
如果你想这样做,这个正则表达式会考虑尾部斜杠:
/^\/[^\/]*\/?$/
它检查第一个字符是否为/
,其余字符不是/
,最后是可选的/
。
答案 3 :(得分:0)
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'));

试试吧