我有这段代码:
$('.numeric-year').keyup(function () {
$(this).toggleClass('field-error', /10|11|12/.test(this.value));
});
我想要做的是从触发.toggleClass()
功能中排除一组给定的数字(例如10,11,12)。
此问题仅与RegEx有关,因为其余代码正在运行。对不起,我在RegEx的东西很糟糕......慢慢学习。
非常感谢任何帮助,谢谢
答案 0 :(得分:1)
使用基于$(this).value
的条件可能会更好地服务于此特定情况。
正则表达式是匹配服务的模式。如果要检查$x
是否遵循特定模式,请使用regexp。但是,在您的情况下,您正在尝试检查给定字符串的值是否等于几个值中的一个。虽然这可以使用regexp来完成(正如bliof所说,检查是否存在1[0-2]
,如果是,则不要运行),这是一个习惯进入的坏习惯...这是字符串的工作比较工具,而不是正则表达式。这是有可能的,但它会变得更加愚蠢,而在其他情况下,这种思维方式可能会导致许多问题和令人头疼的问题。我只想用
$(this).value() != 10 || $(this).value() != 11 || $(this).value() != 12
根据您的回复,我仍然不会推荐正则表达式,而是.inArray()
构造,这更适合您的情况。
答案 1 :(得分: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;
}
});
答案 2 :(得分:0)
在我自己捅了一下之后,我想出了这个解决方案
$(this).toggleClass('field-error', !/10|11|12/.test(this.value));
基于Justin Poliey的回答(Regular Expression to exclude set of Keywords)告诉我不要在RegEx中否定但在我的代码中。
因此在正则表达式!
之前/10|11|12/
并且它起了作用。谢谢你的努力......很多人赞赏