2015-02-09 91 views
0

我正在处理jquery validate插件的添加方法,它必须检测是否输入了3个或更多个连续的相同字符,并提示一条消息。 为此,我需要否定一个正则表达式。这是我的方法:正则表达式和jQuery验证。否定表达式

$.validator.addMethod("pwcheckconsecchars", function (value) { 
    return /(.)\1\1/.test(value) // does not contain 3 consecutive identical chars 
}, "The password must not contain 3 consecutive identical characters"); 

上面的代码示出了当已经输入没有连续的相同字符的错误信息,所以我需要否定表达/(.)\1\1/所以已经取得的错误时,它才会出现。

这显示的jsfiddle我的代码至今:http://jsfiddle.net/jj50u5nd/3/

感谢

+5

怎么样'返回/ \ 1 \ 1 /。测试(值);' – Pointy 2015-02-09 17:47:01

+0

关于你的jsfiddle,你应该将所有这些不同的正则表达式进一个!(。) 。没有必要有五个自定义方法!您甚至可以将最小/最大长度规则纳入其中,一次替换七条规则。 – Sparky 2015-02-09 17:50:04

+0

@Sparky。验证规则是根据我无法修改的业务需求设置的。问题是我需要为每个未通过的规则显示自定义消息。只用一种收集所有规则的方法是否可能? – Adorablepolak 2015-02-09 18:15:38

回答

1

正如评论指出的尖尖的,用!字符否定或反转的结果。

$.validator.addMethod("pwcheckconsecchars", function (value) { 
    return !/(.)\1\1/.test(value); // does not contain 3 consecutive identical chars 
}, "The password must not contain 3 consecutive identical characters"); 

输入“AAAa1”到下面的演示,它满足足够的其他规则来证明这种特殊的方法工作。

DEMO:http://jsfiddle.net/jj50u5nd/6/

+0

太好了。再次感谢你们。 :) – Adorablepolak 2015-02-09 20:30:45