3

次の条件の正規表現が必要です。

  • 最小 5 文字、最大文字数なし (文字と数字のみ)
  • 最低4文字が含まれている必要があります
  • 少なくとも 1 つの数字を含める必要があります

正しい結果の例: root1 1root ro1ot Roo11t など...

現在、私はパターンを持っています^(?=.*\d{1,})(?=.*[a-zA-Z]{4,}).{5,}$

しかし、これは特殊文字も受け入れるようです...?

どうもありがとう!

4

2 に答える 2

6

.{5,}そのため、特殊文字 (ドット = すべて (実際には改行などを除く)) を使用できます。または、必要なものに変更し[a-z0-9]{5,}ます。

注: (?=.*\d{1,})(?=.*[a-zA-Z]{4,})2 番目と 3 番目の要件のみを確認し、必要なキャラクターの性質については何も言わないでください。

編集:
その他の問題:仕様には「少なくとも4文字」と記載されていますが、正規表現には「連続した4文字」と記載されています。また、遅延量指定子を使用します。

/^(?=.*?\d)(?=(?:.*?[a-z]){4})[a-z0-9]{5,}$/i

(?=.*?\d)=> 複数の番号を確認する必要はありません。見つかったら停止します。
(?=(?:.*?[a-z]){4})=> 4 文字を検索するように変更されましたが、連続ではありません。また、大文字と小文字を区別しない修飾子iを最後に追加しました (JS では、Java では同じ方法で宣言していません)。

于 2013-04-23T12:51:46.273 に答える
1

私はこれが醜いことを知っていますが、これはうまくいくようです:

^[a-zA-Z0-9]*(([a-zA-Z]{4,}\d)|([a-zA-Z]{3,}\d[a-zA-Z]+)|([a-zA-Z]{2,}\d[a-zA-Z]{2,})|([a-zA-Z]+\d[a-zA-Z]{3,})|(\d[a-zA-Z]{4,}))[a-zA-Z0-9]*$
于 2013-04-23T13:05:11.977 に答える