3

パスワードが特定の強度形式(これはweb.configで構成されています)に準拠していることを確認する必要があります。パスワードには、特定の数の大文字と特定の数の英数字以外の文字が含まれている必要があります。パスワードを検証する正規表現でPasswordプロパティに注釈を付けて、パスワードにx個のCAPSとy個の非アルファ文字が含まれていることを確認したいと思います。正規表現を手伝ってください。

4

2 に答える 2

3

単一の正規表現でこのような複数の条件をチェックするには、先読みを使用するのが最適です。たとえば、3 つの大文字と 4 つの非アルファベット文字が必要な場合は、次の正規表現を使用できます。

^(?=(?:.*[A-Z]){3})(?=(?:.*[^a-zA-Z]){4})

説明: 最初に、最初の条件のみをチェックする正規表現がどのようになるかを考えてみましょう。3 つの大文字に一致させるには、以下を使用できます。

(?:.*[A-Z]){3}

先読みの中にドロップすることで、この状態をチェックすることができます。これは が行うことなので、文字を消費せずにこの状態をチェックする(?=...)ようになりました。(?=(?:.*[A-Z]){3})この時点で、 を使用して 2 番目の条件を確認でき(?:.*[^a-zA-Z]){4}ます。この 2 番目の条件も先読みの中に入れて、チェックを簡単に追加できるようにします。

現在の正規表現は実際にはどの文字とも一致しないことに注意してください。すべての条件が一致する場合、文字列の先頭 (ゼロ文字) と一致します。そうでない場合、一致は失敗します。実際に文字も消費したい場合は.*、末尾に追加するだけです。

于 2012-06-05T23:44:50.423 に答える
2

私はそれを解決する良い記事を見つけました http://www.zorched.net/2009/05/08/password-strength-validation-with-regular-expressions/

于 2012-06-05T23:45:06.377 に答える