文字の繰り返しを防ぐことに関するスタックオーバーフローの回答をたくさん読んだことがありますが、これらはすべて、正規表現文字列が次のように1行にある場合です。
^(?=.{4})(?!.{32})(?!.*(.)\1{4})\w[\w.-]+\w$
私はパスワードの検証にこの概念を使用していますhttp://www.webdesignerdepot.com/2012/01/password-strength-verification-with-jquery/つまり、有効なクラスをリスト項目に追加するたびに検証ルールが渡されます。次のように、パスワード フィールドの上に手順のリストがあります。
<ul>
<li id="letter" class="invalid">At least <strong>3 letters</strong></li>
<li id="number" class="invalid">At least <strong>2 numbers</strong></li>
</ul>
<input type="password" id="input-password" name="password" autocomplete="off">
ユーザーの入力がこれを満たす場合、命令の横にチェックマークが付きます。
ので、私は持っています:
var pwd = $(this).val();
if ( pwd.match(/[A-z]{3,}/) ) {
$('#letter').removeClass('invalid').addClass('valid');
} else {
$('#letter').removeClass('valid').addClass('invalid');
}
if ( pwd.match(/\d{2,}/) ) {
$('#number').removeClass('invalid').addClass('valid');
} else {
$('#number').removeClass('valid').addClass('invalid');
}
{3,} が機能することを期待していましたが、この例では、3 文字が連続しているかどうかのみを検証し、完全な文字列のどこかに出現するかどうかは検証しません。たとえば、「a1aa」は無効ですが、「aaa」は有効です。私はたくさん読んだことがありますが、正規表現がこのように分割された他の例を見つけることができないため、この状況で何が必要なのか理解できません。
何か助けはありますか?
編集
申し訳ありませんが、nhahtdh が指摘したように、タイトルは質問に関連して意味がありません! 実際には、パスワードが同じ文字を 3 回以上繰り返してはならないという追加の検証要件があります。たとえば、'mississippi' は、文字 's' のインスタンスが 3 つ以上あるため、有効ではありません。