否定先読みアサーションを使用できます。
^(?!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');
}
私の2番目の提案を使用するには:
if(NewPasscode.length == 4 && !/1111|aaaa|abcd|1234/.test(NewPasscode)) {
alert('Ok');
return false;
} else {
alert('NOT Ok');
}
私の3番目の提案を使用するには:
var disallowed = ['1111','aaaa','abcd','1234'];
if(NewPasscode.length == 4 && disallowed.indexOf(NewPasscode) == -1) {
alert('Ok');
return false;
} else {
alert('NOT Ok');
}