您可以使用否定的前瞻断言:
^(?!1111|aaaa|abcd|1234).{4}$
这将匹配任何由 4 个字符组成的字符串,除了 1111
、aaaa
、abcd
或1234
。
但是,仅反转测试可能更容易:
1111|aaaa|abcd|1234
这将匹配1111
, aaaa
, abcd
, 或1234
。您可以简单地检查输入字符串的长度,如果它与此模式匹配,则拒绝它。
就此而言,您可以将这些不允许的字符串以您选择的语言存储在列表/数组等中。只需检查字符串的长度,以及它是否包含在不允许的输入列表中。如果您有更多需要拒绝的模式,这是一种更简洁的方法。
更新
由于您似乎使用的是 javascript,请注意您需要指定正则表达式文字:
if(NewPasscode.match(/^(?!1111|aaaa|abcd|1234).{4}$/)) {
alert('Ok');
return false;
} else {
alert('NOT Ok');
}
但是,如果您只是测试匹配,则可以使用以下test
方法:
if(/^(?!1111|aaaa|abcd|1234).{4}$/.test(NewPasscode)) {
alert('Ok');
return false;
} else {
alert('NOT Ok');
}
要使用我的第二个建议:
if(NewPasscode.length == 4 && !/1111|aaaa|abcd|1234/.test(NewPasscode)) {
alert('Ok');
return false;
} else {
alert('NOT Ok');
}
使用我的第三个建议:
var disallowed = ['1111','aaaa','abcd','1234'];
if(NewPasscode.length == 4 && disallowed.indexOf(NewPasscode) == -1) {
alert('Ok');
return false;
} else {
alert('NOT Ok');
}