Javascript 如何从正则表达式中排除给定的一组数字?

Javascript 如何从正则表达式中排除给定的一组数字?,javascript,regex,Javascript,Regex,我有一段代码: $('.numeric-year').keyup(function () { $(this).toggleClass('field-error', /10|11|12/.test(this.value)); }); 我想做的是从触发.toggleClass()函数中排除给定的一组数字(例如10、11、12) 这个问题只与RegEx有关,因为代码的其余部分正在工作。对不起,我对正则表达式很在行…学习很慢 任何帮助都将不胜感激,谢谢使用基于$(This).value的条件

我有一段代码:

$('.numeric-year').keyup(function () {
    $(this).toggleClass('field-error', /10|11|12/.test(this.value));
}); 
我想做的是从触发
.toggleClass()
函数中排除给定的一组数字(例如10、11、12)

这个问题只与RegEx有关,因为代码的其余部分正在工作。对不起,我对正则表达式很在行…学习很慢


任何帮助都将不胜感激,谢谢

使用基于
$(This).value
的条件可能会更好地处理此特定情况

正则表达式是一种模式匹配服务。如果要检查
$x
是否遵循特定模式,请使用regexp。不过,在您的例子中,您尝试检查给定字符串的值是否等于两个值中的一个。虽然这可以通过使用regexp实现(正如bliof所说,检查是否存在
1[0-2]
,如果为真,则不要运行),但这是一个养成的坏习惯。。。这是字符串比较工具的工作,而不是正则表达式。这是可能的,但这将更加困难,在其他情况下,这种想法可能会导致很多问题和头痛。我会用

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

根据您的答复,我仍然不推荐正则表达式,但推荐使用更适合您的情况的
.inArray()
构造。

您可以尝试使用

假设您有3个输入字段:

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

我自己尝试过之后,想出了这个解决办法

$(this).toggleClass('field-error', !/10|11|12/.test(this.value));
基于Justin Poley的回答()告诉我不要在正则表达式中否定,而是在我的代码中否定


因此,
在正则表达式
/10 | 11 | 12/
之前,它产生了一种魅力。感谢你们的努力,伙计们…非常感谢

我只是想更改代码中的正则表达式,它上面写着
/10 | 11 | 12/很抱歉,我无法使用你们的解决方案,因为我必须排除100个两位数…你们的代码将变得太多long@nasir-仍然不同意,添加了一点。我知道你已经做到了,但我还是建议你以后不要这样做。你是在寻找像1[0-2]@bliof这样的东西吗?我想用RegExI排除一组特定的数字。我刚刚发布了一个答案,非常简单,但完全符合我的要求
$(this).toggleClass('field-error', !/10|11|12/.test(this.value));