2015-08-19 77 views
2

我想使用(JavaScript)RegEx負面匹配特定值(比方說42)。如何使特定值與RegEx反向匹配

我知道如何積極價值相匹配:

/^42$/.test(42); // true 
/^42$/.test(43); // false 
/^42$/.test(422); // false 

我期待本作的逆:

/somemagic/.test(42); // false 
/somemagic/.test(43); // true 
/somemagic/.test(422); // true 

的解決方案,我的谷歌福止跌回升爲沒有工作我因爲我關心的是匹配被測試的整個值,而不僅僅是一部分。

我已經無休止地搜尋過這個......任何幫助都會非常感謝!

謝謝!

回答

3

你需要一個錨定的負前瞻:

document.write(/^(?!42$)\d+$/.test(42) + "<br/>"); 
 
document.write(/^(?!42$)\d+$/.test(43) + "<br/>"); 
 
document.write(/^(?!42$)\d+$/.test(422));

在字符串的最開始的(?!42$)先行檢查字符串爲42(因爲$斷言字符串的結尾) 。因此,42不符合\d+模式。

這是一種很好的技術,可以將更多的異常添加到更通用的模式中,例如簡寫或字符類,甚至包含可選組的模式。

+0

謝謝!你搖滾:) –