2011-07-19 24 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

相关问题