2017-04-13 178 views
1

我在正则表达式中有一些问题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/

我的正则表达式我到目前为止,\/.+[^\/]

回答

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));

+0

我也想确保道路不单纯是一个斜杠,这正则表达式不正确地解释这一点。 'var test1 =“/”; //我希望这是错误的。 –

+0

只要将'*'改成'+' –

1

有点像^[^/]*/[^/]*$也许?

或者,带有分隔符的/^[^\/]*\/[^\/]*$/

0

要回答你的问题,这个正则表达式将工作:/^\/[^\/]*$/。它基本上检查第一个字符是/,而其余字符不是/

但我怀疑你可能也想匹配"/somePath/",因为通常会将尾部斜线视为规范网址。

如果你想这样做,这正则表达式将采取斜线考虑:

/^\/[^\/]*\/?$/ 

它检查的第一个字符是一个/,而其余字符不/和最后可选/

+0

这个表达式不正确地返回'true'只是'/'。我希望这是'假'。 –

+0

为了将来的参考,请从一开始就清楚您的问题以防止沟通不畅。 –

+1

我很清楚......但事情变了,我起初并没有考虑只有'/'的根。尽管谢谢你的回答。 –

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'));

尝试