2011-09-28 50 views
2

就像標題所說,我在JavaScript中有一個(錯誤的)正則表達式,它應該檢查包圍斜槓的「2」字符(在這種情況下)。所以如果URL是http://localhost/page/2/那麼正則表達式就會通過。用斜槓包圍的數字的正則表達式

在我的情況下,我有類似http://localhost/?page=2和正則表達式仍然通過。

我不知道爲什麼。誰能告訴我它有什麼問題?

/^(.*?)\b2\b(.*?$)/ 

(我要告訴你,我沒有寫這個代碼,我不知道它是如何工作的,因爲我真的不好用正則表達式)

+1

您的正則表達式應該看起來像'/ \ d + /' – bdares

+1

它正在尋找'\'圍繞着'\ b's這是詞邊界。所以只要'2'字符被認爲是一個「單詞」就會匹配。 '(。*?)'只是抓住周圍的文本(貪婪),大概是這樣你可以重建URL。 – davin

+0

嘗試丟失問號。^(。*)應該足夠,如果你想匹配任何起始序列。 – Nanda

回答

4

你不檢查斜線包圍的數字。你看到的斜線只是你的正則表達式分隔符。你檢查兩邊的文字邊界是\b。如果你希望只允許2斜線包圍試試這個

/^(.*?)\/2\/(.*?)$/ 

^意味着從字符串

$比賽,直到開始比賽。這是/2/也爲=2

真字符串末尾

(.*?)這些部分匹配您的2前後的所有內容,這些部分是st在捕捉小組。

如果你不需要這些部分,那麼理查德是正確的,正則表達式/\/2\//適合你。

+0

這也做到了。接受的答案,因爲你用'\ b'解釋了這個事情。謝謝 –

+0

+1的解釋比我好 –

6

顯得過於簡單,但不應該「噸這項工作?:

/\/2\// 

http://jsfiddle.net/QHac8/1/

因爲它的JavaScript你必須逃脫斜線,因爲它們是一個正則表達式的字符串分隔符。

,或者如果你想匹配任何數量:

/\/\d+\// 
+1

我想象更有可能'/ \/\ d + \ //' –

+0

+1好的答案,謝謝:) –

+0

@ TomalakGeret'kal這是真的,我會更新答案。 –

相關問題