私は次の正規表現を使用しています。 (?=。+ [az])(?=。+ [AZ])(?=。+ [^ a-zA-Z]){8、}正規表現が意図したとおりに動作しない
私の目標は、全ての3
以下の入力とI式をテストする http://rubular.com/r/i26nwsTcaUと http://regexlib.com/RETester.aspxを使用してい大文字、小文字、数字、特殊文字
以下の4つの特性の
[email protected]
password1P
Password1
paSSw0rd
を有しますこれらは通過しなければならないが、第2および第4のものだけがhttp://rubular.com/r/i26nwsTcaUとなり、すべてがhttp://regexlib.com/RETester.aspxになります。
また、私はこのコードを渡す必要があります「Password1という」を検証するために失敗した
private void doValidate(String inputStr,String regex) {
Pattern pattern = Pattern.compile(regex);
if(!pattern.matcher(inputStr).matches()){
String errMessage = "";
throw new UniquenessConstraintViolatedException(errMessage);
}
}
を検証するために使用しています次のコードを持っています。 は限り表現が行くように私は、誰もが、それは私が間違ってやっているものを私に伝えることができ、この
must have lower (?=.+[a-z])
must have upper (?=.+[A-Z])
must have non alpha (?=.+[^a-zA-Z])
must be eight characters long .{8,}
ようにそれを理解しています。
ありがとうございます。
http://xkcd.com/936/ – FlyingStreudel
@Vulcanが、またはそれはそれらのすべてに一致します意味します。 – Cfreak
問題は、最初の大文字が無視されていることです。文字列の他の場所に資本を追加すると、パスワード1と3で正常に動作します。 – Vulcan