正規表現を検索していますが、少なくとも2桁の数字と1文字の特殊文字を使用でき、パスワードの最小長は8です。次のようになります。[[email protected]#$%0-9]*[[email protected]#$%0-9]+[[email protected]#$%0-9]*
パスワードの正規表現(少なくとも2桁と特殊文字1個、最小長8)
答えて
この正規表現を試してください。先読みを使用して、少なくとも2桁の数字とあなたが指定した特殊文字の1つがあることを確認します。
^(?=.*?[0-9].*?[0-9])(?=.*[[email protected]#$%])[[email protected]#$%0-9]{8,}$
^ #Match start of line.
(?=.*?[0-9].*?[0-9]) #Look ahead and see if you can find at least two digits. Expression will fail if not.
(?=.*[[email protected]#$%]) #Look ahead and see if you can find at least one of the character in bracket []. Expression will fail if not.
[[email protected]#$%0-9]{8,} #Match at least 8 of the characters inside bracket [] to be successful.
$ # Match end of line.
0-9のように見えますが、あなたの文字のリストで2回宣言されています:[0-9a-zA-Z!@#$%0-9] – blatt
説明は、このお試しください:パスワード正規表現ポリシーを作成するためのリンクの下に読んでください^.*(?=.{8,15})(?=.*\d)(?=.*\d)[[email protected]#$%]+$
を: -
このようなものは、このトリックを行うべきです。
^(?=(.*\d){2})(?=.*[a-zA-Z])(?=.*[[email protected]#$%])[[email protected]#$%]{8,}
(?=(.*\d){2}) - uses lookahead (?=) and says the password must contain at least 2 digits
(?=.*[a-zA-Z]) - uses lookahead and says the password must contain an alpha
(?=.*[[email protected]#$%]) - uses lookahead and says the password must contain 1 or more special characters which are defined
[[email protected]#$%] - dictates the allowed characters
{8,} - says the password must be at least 8 characters long
少し微調整が必要な場合があります。あなたが必要とする特殊文字を正確に指定しますが、そのトリックを行うべきです。
これは非常に便利で詳細なものでしたが、ここに来る他の人にとって私はこのガイド[http://www.cheatography.com/ davechild/cheat-sheets/regular-expressions /)を使って、あなたの答えをもう少しカスタマイズすることができます。 – CupOfJoe
試してみてください、この1:それはすぐにどのように動作するか
ここ^(?=.*\d{2,})(?=.*[$-/:-?{-~!"^_`\[\]]{1,})(?=.*\w).{8,}$
です:
(?=.*\d{2,})
この部分は、少なくとも2桁を除いて言っ(?=.*[$-/:-?{-~!"^_
[] {1、}) `これら少なくとも1の特殊文字です(?=.*\w)
と残りは任意の文字です([A-Za-z0-9_]
に等しい).{8,}$
これは以前のすべてのルールを含む少なくとも8文字です。以下 は(Regexperの助けを借りて作られた)現在の正規表現
regexpはこの^(?=(.*\d){2,})(?=.*[$-\/:-?{-~!"^_'\[\]]{1,})(?=.*\w).{8,}$
チェックアウトの詳細についてのコメントのようになります UPDのマップです。
正規表現は、一致させようとしている文字列の構造体を定義します。正規表現に空間構造を定義していない場合(、少なくとも2桁に続いて特殊文字、...など)、regex
を使用して文字列を検証することはできません。
すべてのルールを1つの正規表現に実装する理由はありません。 ので、同じようにそれをやって考えてみましょう:
Pattern[] pwdrules = new Pattern[] {
Pattern.compile("........"), // at least 8 chars
Pattern.compile("\d.*\d"), // 2 digits
Pattern.compile("[-!"§$%&/()=?+*~#'_:.,;]") // 1 special char
}
String password = ......;
boolean passed = true;
for (Pattern p : pwdrules) {
Matcher m = p.matcher(password);
if (m.find()) continue;
System.err.println("Rule " + p + " violated.");
passed = false;
}
if (passed) { .. ok case.. }
else { .. not ok case ... }
このpasswort規則は、追加、削除または努力なしに変更することができるという付加的な利点を持っています。彼らはいくつかのressourceファイルに存在することさえできます。
さらに、わかりやすいです。
- 1. 正規表現8〜10桁
[パスワード検証のための正規表現]の複製が可能です(http://stackoverflow.com/questions/7245267/regular-expressions-for-password-validation) – Toto