2011-01-20 13 views
0

パスワードが特定の単語(パスワードや12345など)と等しくないことを確認する正規表現が必要です。私はいくつかの組み合わせを試しましたが、否定に問題があります。弱いパスワードの正規表現

DataAnnotations検証属性の場合は、それが適切です。正規表現で

+0

正確に重複しているかどうかはわかりませんが、少なくともこのような質問には少なくとも似ています。http://stackoverflow.com/questions/3131025/strong-password-regex –

+0

「弱い」パスワードのリストは長くなり、決して完了しません。強力なパスワードの要件をよりよく定義し、P @ $$ w0rdを許可する –

+0

@ ho1:重複していません。私はちょうどいくつかの共通のパスワードのいずれかではなく、パスワードを確認したい。 @ ho1&ヘンク:私はaggreeですが、それは私の決定ではなく、ただのビジネス要件です。 –

答えて

2

否定は

"^(?!password)(?!12345)" 

のような負の先読みで最高の作品しかし、私は悪いパスワードを作成し、それらのすべてが非常に困難になるキャッチ式を作成する際、ユーザーは非常に賢いことができると思います。

+2

ジェンスとの合意。あなたが本当にパスワードの強さを心配しているなら、あなたは全力を尽くして、パスワード強度アルゴリズムを実装するべきです。 Wikipediaにはいくつかの情報があります:http://en.wikipedia.org/wiki/Password_strength – brindy

+0

@Jens:残念ながら、これは私が入れたテキストの検証に失敗します。 –

+0

'ToUpper'を実行して辞書をチェックしたり、さまざまな文字種のカウントを強制したりします。 – user7116

1

本当に正規表現を使用してこれを達成しますか?より「弱い」言葉が出てくるほど、正規表現にはもっと長く混乱が生じます。受け入れられない単語のリストを作成するだけでなく、ループ/ LINQを使用してパスワードにそれらが含まれているかどうかを確認するのはなぜですか?それでも、読むのがずっと速くて簡単です。

あなたが求めている正規表現も、上記の解決策もn個の連続した数字/文字を検出していないことの1つです。あなたは12345を探していますか?あるいは、1234567,1234、または56789のような文字列を検出するものを探していますか?それはいくらか余分な仕事を必要とするでしょう。

関連する問題