2017-11-16 1 views
0

要件:少なくとも1つの文字-ZA-Z は、長さに関係なく、すべて同じ文字(することはできませんが含まれている必要があり にする必要があります以上の4つの文字previous answerに基づく)正規表現[4つの文字、1つの文字は、すべて同じ文字にすることはできません]

私が思い付いた:

(?!.*([A-Za-z0-9])\1{2})(?=.*[a-z]).{5,} 

、それは "AAAAA" のような値と一致しない正常に動作します。

(?!.*([A-Za-z0-9])\1{2})は、いずれの文字も2回以上連続して繰り返されないことを確認します。

(?=.*[a-z])は、問題が繰り返される文字で単語がない上、文の一部(ある場合、私は(私は検証目的のために正規表現を使用)有効であることを「行」が必要である少なくとも一つの小文字

が必要です彼自身)) 「AAA電池を含む」。

答えて

1

あなたは、削除しようとする可能性が第1の負の先読みから表現 "*。":

(?!([A-Za-z0-9])\1{2})(?=.*[a-z]).{5,} 

これは今一致する:ハローAAAAAテストまたははAAA電池

を含むが、それでも一致しません:AAAAA

編集:

あなたもAAAAA電池ような表現をサポートしたい場合は、あなたが実際に使用してください。

(?!([A-Za-z0-9])\1{2}$)(?=.*[a-z]).{5,} 

クレジットは、この補正に@Brianスティーブンスにアクセスしてください。

+0

が完璧です。ありがとう – Angelo

+1

これはすべてのOPの要件を満たしていません。彼はそれが有効であることを望んでいたときに、 "AAA電池"を無効と見なします。ネガティブな先読みには "$"アンカーが必要です。 –

+0

多くの、これを指摘してくれてありがとう:@BrianStephens。 –

1

私はこの正規表現は、何が必要だと思う:

(?=.*[a-zA-Z])(?=.*\d)(?!.*([A-Za-z0-9])\1{1}).{4,} 

それを少し説明するために:

(?=.*[a-zA-Z])    // To make sure there is at least one letter (uppercase or lower case) 
(?!.*([A-Za-z0-9])\1{2}) // To make sure nothing will repeat twice in a row 
.{4,}      // Have at least 4 characters 

この正規表現は

aa23 
A123 
a1234 
A1234 
$%$%a 
$%$%A 

のようなものが「奇妙な除外できるようになります'文字のように(?!.*[\W])を追加する必要があります:

(?=.*[a-zA-Z])(?!.*[\W])(?!.*([A-Za-z0-9])\1{1}).{4,} 
関連する問題