2017-09-06 6 views
-3

この質問は、要件を満たすためにC#を使用して正規表現を作成する方法に関して何度も尋ねられています。私は..複雑なパスワードの正規表現

  • は、少なくとも8文字の長さの正規表現
  • 少なくとも1つの大文字
  • 1番号
  • 1特殊文字!@の#$%^ & *()
  • が必要です
  • パスワードはログイン名と同じではありません(確認しやすい)
  • 2つ以上の繰り返し文字は含まれていません。 aaa123

自分自身でこれを試してみると、これらの要件のそれぞれを1つずつ実行し、正規表現を構築する方法を探していました。これは正しいアプローチですか?

私は何かが不足しているように感じる。私は正規表現の表現と複雑なものを作成する方法について読んでいます。あなたのフィードバックは非常に必要でした。

ありがとうございました。

+0

私はOPの問題は、この余分な部分とそのコードの組み合わせであると思い@Tushar *以上のものを含んでいません2つの反復文字aaa123 *;)。 –

+2

[Mandatory CH link](https://blog.codinghorror.com/password-rules-are-bullshit/) –

答えて

2

は、私はあなたがこのようなRegexを使用することができると思う:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]#$%^&*()])(?!.*userName)(?!.*(.)\1{2,}).{8,}$ 

説明:

^       // from start 
(?=.*[a-z])    // has at least one lower case character 
(?=.*[A-Z])    // has at least one upper case character 
(?=.*\d)     // has at least one digit 
(?=.*[[email protected]#$%^&*()])  // has at least one special character 
(?!.*userName)   // has not userName => set it by a variable 
(?!.*(.)\1{2,})   // has not an repeated character more than twice 
.{8,}     // has a length of 8 and more 
$       //to the end 
+2

https://stackoverflow.com/a/5142164/47672とにかくこの質問は既に存在するものと全く同じです。それは閉じなければならない。 – 0x49D1

+0

@ 0x49D1正規表現はとても読めません - OP *は3つの小文字*;)の代わりに2つ以上の反復文字*を含む必要はありません。 –

+0

これは、とにかくOPの要件を満たしていません。1つの番号は、重複がなくても、依然として自らの努力を示していません。 – Sayse

関連する問題