2016-08-01 14 views
0

私は与えられたルールのパスワードを検証する正規表現を書こうとしています。与えられたルールの組み合わせのための正規表現

  • 小文字(すなわち、AZ)
  • 大文字(すなわちAZ:

    パスワードは少なくとも8つの長さの文字とは、文字の次の4種類の少なくとも3つが含まれているでなければなりません)

  • 番号(すなわち0-9)
  • 特殊文字(たとえば、!#$ & @ *)

私はthisディスカッションを行っていて、thisは本当に素晴らしい答えです。今

私が言及した要件のために正規表現を記述しようとしていると私は、この

^(?=.*[A-Z])(?=.*[[email protected]#$&*])(?=.*[0-9])(?=.*[a-z]).{8,}| 
(?=.*[[email protected]#$&*])(?=.*[0-9])(?=.*[a-z]).{8,}| 
(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z]).{8,}| 
(?=.*[A-Z])(?=.*[[email protected]#$&*])(?=.*[a-z]).{8,}| 
(?=.*[A-Z])(?=.*[[email protected]#$&*])(?=.*[0-9]).{8,}$ 

のような解決策を考え出した、それが完璧に動作しているrubularを参照してくださいが、私はこれらの正規表現を最適化したいと私は思いもしこれを単純化する方法があれば、わからない。 ご意見をお待ちしております。 多くのおかげ

+0

この正規表現を最適化すると、それを複数の小さな正規表現に分割することを意味します。彼らは本当に読みやすく保守的です。 –

+0

@WiktorStribiżew本当にありがとうございます。ここに役に立つリンクを提供できれば、ありがとうございます –

+0

正規表現がうまくいけば、おそらくこの質問をするのに良い場所は[codereview.se]でしょう。 –

答えて

3

は自分自身(および将来的にそのアプリ上で動作します誰に)好意を行い、そして4で正規表現を分割:

{ 
    :lowercase => /regex_for_lowercase/, 
    :uppercase => /regex_for_uppercase/, 
    :digits => /regex_for_digits/, 
    :symbols => /regex_for_symbols/, 
} 

、パスワードの一致を支配するどのように多くのこれらの4のカウント。また、入力されたパスワードが検証されない場合、より有用なエラーメッセージを表示する機会が与えられます。

関連する問題