1

次の正規表現があります。

#^(?=.{8,20})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$#

この正規表現は、AZ 0 ~ 9 のグループと特殊文字を少なくとも 1 つずつ含む文字列に一致します。

4 つのサブパターンから少なくとも 3 つに一致するように正規表現を作成することは可能ですか (複数ではなく 1 つの preg_match)?

たとえば、文字列は AZ、0-9 および az 、またはAZ、0-9 および特殊文字に一致する必要があります。ただし、4/4 も許可する必要があります。

4

1 に答える 1

2

もちろん、4 つの条件のうち 3 つしか指定できません。すべての可能性を含む代替を記述してください。

/^(?:(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*\W)|...|...|...).{8,20}$/

複雑すぎる2つの選択肢を書きました。...自分で部品を埋める必要があります。

単一の正規表現でそれを行わないことをお勧めします。複雑になり、エラーが発生しやすくなります。条件を個別にテストし、一致する数を数えます。

于 2013-03-04T08:14:33.407 に答える