我有一個正則表達式問題,我試圖忽略數字'41',我想要4,1,14等全部匹配。正則表達式否定匹配查詢
我有了這個[^\b41\b]
這是有效的我想要什麼,但這個也忽略值1和4
作爲一個例子,這個「41」匹配的所有單次迭代,但我希望它不比賽: \ B41 \ b
我有一個正則表達式問題,我試圖忽略數字'41',我想要4,1,14等全部匹配。正則表達式否定匹配查詢
我有了這個[^\b41\b]
這是有效的我想要什麼,但這個也忽略值1和4
作爲一個例子,這個「41」匹配的所有單次迭代,但我希望它不比賽: \ B41 \ b
你可以使用一個負look-ahead assertion排除41
:
/\b(?!41\b)\d+\b/
這個正則表達式被解釋爲:在任何字邊界\b
,如果後面沒有41\b
((?!41\b)
),匹配一個或更多數字後跟一個字邊界。
或與同一負look-behind assertion:
/\b\d+\b(?<!\b41)/
該正則表達式被解釋爲:匹配由字邊界包圍的一個或多個數字,但只有當子在的端部比賽之前沒有\b41
((?<!\b41)
)。
甚至可以只使用基本的語法:
/\b(\d|[0-35-9]\d|\d[02-9]|\d{3,})\b/
這隻能通過任一字邊界包圍的數字序列相匹配一個4
在第一位置或不在第二位置1
歡呼傢伙,現場 – Matt 2010-03-25 15:11:30
這是類似的問題:「Regular expression that doesn’t contain certain string」,所以我會從那裏重複我的回答:
^((?!41).)*$
這將爲任意字符串,而不只是41.見my response there一個解釋。
你的達人!謝謝 – Sydwell 2012-09-29 13:05:25
歡呼傢伙,現場 – Matt 2010-03-25 15:12:17