1. ホーム
  2. regex

[解決済み] 文字列が少なくとも1つの小文字の文字、大文字の文字、数字、記号を含んでいることを確認するためのRegEx

2022-04-13 10:45:08

質問

与えられた文字列が、以下の各カテゴリーから少なくとも1つの文字を含むことを確認するための正規表現を教えてください。

  • 小文字
  • 大文字
  • 数字
  • 記号

私は、個々のセットのパターンを知っています。 [a-z] , [A-Z] , \d_|[^\w] (ちゃんとあったよね?)。

しかし、文字列がこれらすべてを任意の順序で含むようにするには、これらをどのように組み合わせればよいのでしょうか?

どのように解決するのですか?

もし、一つの正規表現が必要なら、試してみてください。

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)

簡単な説明です。

(?=.*[a-z])        // use positive look ahead to see if at least one lower case letter exists
(?=.*[A-Z])        // use positive look ahead to see if at least one upper case letter exists
(?=.*\d)           // use positive look ahead to see if at least one digit exists
(?=.*\W)           // use positive look ahead to see if at least one non-word character exists

そして、SilentGhostに同意します。 \W は少し広いかもしれません。私なら、こんな文字セットに置き換えます。 [-+_!@#$%^&*.,?] (もちろん、もっと自由に追加してください!)