- 長さが5〜15文字の長さ
- は、少なくとも2つの大文字
- を有する少なくとも2つの小文字の文字
- を持っています1桁です
私は本当にこれに固執し、これを解決するためのアイデアはありませんので、何か助けていただきありがとうございます。
私は本当にこれに固執し、これを解決するためのアイデアはありませんので、何か助けていただきありがとうございます。
あなたは他に何も(^
と$
)がないことを確認すること、すべての条件をチェックするために先読みして、5〜15文字(任意の)と一致し使用することができます。
^(?=(?:.*[A-Z]){2})(?=(?:.*[a-z]){2})(?=.*\d).{5,15}$
^
:文字列の開始(?= )
:前向きに見える。どんな文字もつかみませんが、パターンが一致するかどうか調べてみましょう(?: )
:このグループを非キャプチャにしてください。つまり、$1
または\1
で参照できるキャプチャグループにはなりません0以上の文字(複数可)に続く:.*\d
が小文字に続いて0以上の文字(複数可):大文字.*[a-z]
続い0以上の文字(複数可):依存).*[A-Z]
数字で{2}
:p再現パターンは2回一致する必要があります.{5-15}
:5〜15文字。$
:文字列の最後、あなたが例えば、test
で正規表現に対して文字列をテストすることができますJavaScriptでは:
var regex = /^(?=(?:.*[A-Z]){2})(?=(?:.*[a-z]){2})(?=.*\d).{5,15}$/;
console.log(regex.test('a9B1c')); // false, missing capital letter
console.log(regex.test('a9B1cD')); // true
trinctotが最初に右だったが、誰があなたのコードを使用しているかによって、これは維持/変更する方が簡単かもしれません:
var lowerPass = 2 <= (string.match(/[a-z]/g) || []).length;
var upperPass = 2 <= (string.match(/[A-Z]/g) || []).length;
var digitPass = 1 <= (string.match(/[0-9]/g) || []).length;
var lengthPass = 5 <= string.length <= 15;
var stringPass = lowerPass + upperPass + digitPass + lengthPass == 4;
ありがとうございました、私は最近regexを使い始め、先を見たり聞いたりしませんでした。 –