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

时间:2011-07-19 11:15:47

标签: javascript regex

我有这段代码:

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

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

此问题仅与RegEx有关,因为其余代码正在运行。对不起,我在RegEx的东西很糟糕......慢慢学习。

非常感谢任何帮助,谢谢

3 个答案:

答案 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/并且它起了作用。谢谢你的努力......很多人赞赏