繁体   English   中英

如何从 RegEx 中排除给定的一组数字?

[英]How do I exclude a given set of numbers from a RegEx?

我有这段代码:

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

我想做的是从触发.toggleClass() function 中排除一组给定的数字(例如10、11、12)。

这个问题仅与正则表达式有关,因为代码的 rest 正在工作。 抱歉,我对 RegEx 的东西很糟糕……学习缓慢。

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

使用基于$(this).value的条件可能会更好地服务于这种特殊情况。

正则表达式是一种模式匹配服务。 如果要检查$x是否遵循特定模式,请使用正则表达式。 但是,在您的情况下,您正在尝试检查给定字符串的值是否等于几个值之一。 虽然这可以使用正则表达式来完成(如 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" />

如果您想获得与 2010 和 2000 不同的值的元素,您可以执行以下操作:

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

在自己尝试之后,我想出了这个解决方案

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

基于贾斯汀波利的回答(正则表达式排除一组关键字)告诉我不要在正则表达式中否定,而是在我的代码中否定。

因此! 在正则表达式/10|11|12/之前,它很有魅力。 谢谢你们的努力……非常感谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM