2017-04-13 175 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'));

嘗試