1

javascriptでのパスワード検証用に次の正規表現があります。

^[!#\$%\(\)\*,\-\./:;=\?@\[\\\]\^_`\{\|\}~a-zA-Z0-9]*$

   <script type="text/javascript">
        var regex = "^[!#\$%\(\)\*,\-\./:;=\?@\[\\\]\^_`\{\|\}~a-zA-Z0-9]*$";
        var value = 'test';
        if (value.match(regex) == false) {
            alert('password invalid');
        }
    </script>

正規表現のルールは次のとおりです。

  • 12〜25文字
  • 少なくとも1つの大文字
  • 少なくとも1つの小文字
  • 少なくとも1つの数字
  • 少なくとも1つの特殊文字:!#$%()*、-./ :; =?@ [] ^ _ `{|}〜

ただし、正規表現は機能していないようです。どの文字とも一致します。これを修正するにはどうすればよいですか?

4

3 に答える 3

1

正先読みを使用すると、1 回のマッチ コールで正規表現を検証できます。次の正規表現を使用します。

 var regex =
     /(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!#$%()\*,/:;=?@\[\\\]\^_`{}|.-])^.{12,25}$/;
 var value = 'aaaAaaaaa?test2';
 if (!value.match(regex))
     document.writeln('invalid');
 else
     document.writeln('valid');

See this code live in action

于 2012-06-01T17:25:31.827 に答える
1

試す:

/^(?=(?:.*[a-z]){1})(?=(?:.*[A-Z]){1})(?=(?:.*\d){1})(?=(?:.*[!#$%()*,-./:;=?@[]^_`{|}~ ]){1,}).{12,25}$/
于 2012-06-01T17:31:44.267 に答える
1

この正規表現は機能します:

^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[-|^!#$%()*,./:;=?@_`{}~[\]]).{12,25}$

先読みの手法を使用して、少なくとも 1 つの数字、小文字、...

また、同様の課題については、パスワード ルールの正規表現を参照してください。

于 2012-06-01T17:33:30.747 に答える