2012-04-18 8 views
0

こんにちは、私は私が正規表現文字の組み合わせ

((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,}) 
を使用してみましたアルファベットの

コンビネーション、 数字(2) 特殊文字(1) 最低6つの文字

のような文字の組み合わせを形成したいです

しかし、私は上記のように組み合わせを行うことができませんでした。

+0

をあなたが組み合わせを作成するために、またはそれらの組み合わせと一致するようにしたいですか? –

+1

いくつかのサンプル入力と期待されるマッチが役に立ちます。 – alan

答えて

1

あなたの正規表現は基本的に問題ありません。

あなたは正規表現の文字列をサポートしないJavaや他の言語でない限り、\\d\dに変更する必要があります。正規表現のその部分はリテラルのバックスラッシュと一致させてから、dを続けてください。

また、パフォーマンスを向上させるために正規表現を文字列の先頭に固定する必要があります。 Javaでは、.matches()メソッドが暗黙のうちにこれを行います。

現在、あなたの正規表現は1桁だけで、2つのASCIIアルファベット(小文字1文字、大文字1文字)が必要です。それは本当にあなたが望むものですか?

私はこのような要件を解釈しているだろう:

if (subjectString.matches("(?=.*\\d.*\\d)(?=.*[A-Za-z])(?=.*[@#$%]).{6,}")) { 
    // Password matches the criteria 
} else { 
    // Password doesn't match the criteria 
} 
+0

これはJava Regexです – user1321824

関連する問題