regexを使用してこれらの基準を組み合わせることは可能ですか?コード最適化の正規表現の組み合わせ
は、少なくとも8文字の少なくとも三種を含み、以下:
- 大文字アルファ(AZ)
- 番号(0-9)
- 小文字アルファ(AZ)
- 特殊文字(!、$%の^ & *()_ + |〜 - = `{} []:?";」<>、/)。
regexを使用してこれらの基準を組み合わせることは可能ですか?コード最適化の正規表現の組み合わせ
は、少なくとも8文字の少なくとも三種を含み、以下:
はい、それは可能ですあなたが使用 正規表現エンジンは、あなたが他の文字で行けば、ドット.
が使用され、言われていること条件文(?(cond)yes|no)
をサポートする必要があります。あなたはこの
^(?=.{8})(?:[a-zA-Z0-9!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~]*?(?:(?(1)(?!))([A-Z])|(?(2)(?!))([a-z])|(?(3)(?!))([0-9])|(?(4)(?!))([!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~]))){3,4}[a-zA-Z0-9!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~]*$
を使用し、ASCIIの範囲で唯一の非空白文字を許可する場合は
^ # BOS
(?= .{8}) # At least 8 chars
(?: # Require 3 out of the 4 types
.*?
(?:
(?(1)
(?!)
)
([A-Z]) # (1), Upper
|
(?(2)
(?!)
)
([a-z]) # (2), Lower
|
(?(3)
(?!)
)
([0-9]) # (3), Digit
|
(?(4)
(?!)
)
([!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~]) # (4), Special
)
){3,4}
.*
$ # EOS
を拡大
^(?=.{8})(?:.*?(?:(?(1)(?!))([A-Z])|(?(2)(?!))([a-z])|(?(3)(?!))([0-9])|(?(4)(?!))([!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~]))){3,4}.*$
は、あなたが正確に何をしようとしている
^ # BOS
(?= .{8}) # At least 8 chars
(?: # Require 3 out of the 4 types
[a-zA-Z0-9!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~]*?
(?:
(?(1)
(?!)
)
([A-Z]) # (1), Upper
|
(?(2)
(?!)
)
([a-z]) # (2), Lower
|
(?(3)
(?!)
)
([0-9]) # (3), Digit
|
(?(4)
(?!)
)
([!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~]) # (4), Special
)
){3,4}
[a-zA-Z0-9!"#$%&'()*+,\-./:;<=>[email protected][\]^_`{|}~]*
$
特殊文字セットの '/'文字をエスケープしませんでした。 –
@EganWolf - エスケープする必要はありません。これは特別な文字ではありません。文字列正規表現の区切り文字、つまり正規表現のリテラル(JS、Perl、またはPhpなど)として使用されている場合は、エスケープする必要があります。私/私は文脈の中でのみ正規表現を表示します。それが生であれば(これは)、_engine_が解析するものです。 – sln
を拡大しましたコードを最適化するには?一般に、単純化のために最適化すべきです。これは、これらを1つの正規表現で組み合わせない*ことを意味します。 – Bergi
"*少なくとも3つのうち*"は、正規表現が吸うものの1つです。独自の基準をよりよく評価し、ビジネスルールをホスト言語で記述してください。 – Bergi