2011-07-19 22 views
0

我有這樣一段代碼:如何從RegEx中排除給定的一組數字?

$('.numeric-year').keyup(function() { 
    $(this).toggleClass('field-error', /10|11|12/.test(this.value)); 
}); 

我希望做的是排除一組給定的數字(如10,11,12)從觸發.toggleClass()功能。

此問題僅適用於RegEx,因爲其餘代碼正在運行。對不起,我在RegEx的東西里很糟糕......慢慢學習。

任何幫助將大大讚賞,感謝

+0

你在找什麼像1 [0-2] – bliof

+0

@bliof我期待排除一組特定的數字使用RegEx – Nasir

回答

0

後在它自己有刺我這個解決方案提出了基於賈斯汀Poliey的ANS

$(this).toggleClass('field-error', !/10|11|12/.test(this.value)); 

wer(Regular Expression to exclude set of Keywords)告訴我不要在RegEx中否定,但在我的代碼中。

因此!之前的正則表達式/10|11|12/和它的魅力。感謝您的努力傢伙...很多讚賞

1

這種特殊情況下,可能會使用基於$(this).value條件得到更好的服務。

正則表達式是一個模式匹配服務。如果您想檢查$x是否遵循特定模式,請使用正則表達式。不過,在你的情況下,你試圖檢查給定字符串的值是否等於某個值。雖然這可以使用正則表達式來完成(如bliof所述,檢查是否存在1[0-2],如果爲true,則不要運行),這是一個不好的習慣......這是一個字符串比較工具的工作,而不是正則表達式。這是可能的,但它會變得更笨拙,而在其他情況下,這種思維方式可能會導致很多問題和頭疼。我只想用

$(this).value() != 10 || $(this).value() != 11 || $(this).value() != 12 

根據您的回覆,我還是不建議正則表達式,但.inArray()結構,哪個更適合您的情況。

+0

我只是想要改變RegEx在代碼中說'/ 10 | 11 | 12 /' – Nasir

+0

@nasir - 擴展文本 – eykanal

+0

對不起,我不能使用您的解決方案,因爲我必須排除100,兩位數字......您的代碼將變得太長 – Nasir

0

您可以嘗試使用positive or negative lookahead

比方說,你有3個輸入字段:

<input type="text" value="2020" /> 
<input type="text" value="2010" /> 
<input type="text" value="2000" /> 

而且你想用不同的值比2010年和2000年的元素,你可以做這樣的事情:

$("input").filter(function() { 
    if(!this.value.match("(?=2010|2000)")) { 
     return this; 
    } 
}); 
+0

我剛剛發佈了一個非常簡單的答案,但完全按照我想要的方式工作 – Nasir

相關問題