0

jQuery.match() 関数を使用して文字列を検証したい。文字列に含める必要があります

  1. 10 文字以上。
  2. 少なくとも 1 つの数字が含まれている必要があります。
  3. 大文字を必ず一つは含んでください。

どうやってやるの?誰かがそれを行うための正規表現を教えてもらえますか?

私はすでにこれを持っています:

^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

少なくとも 1 つの特殊文字、1 つの大文字、1 つの小文字 (任意の順序) を許可します。

4

3 に答える 3

5

正しく実行していないため、長さの制限に厳密には準拠していません。最初の先読み -(?=.{8,})は、最小長の文字列をテストするだけ8です。ルックアラウンドは長さ 0 のアサーションであるため、後のルックアヘッド.{8,0}は文字をまったく消費しないことに注意してください。

実際、その最初の先読みを削除して、マッチングの最後にその量指定子を使用するだけです。

この正規表現を試してください:

^(?=.*[A-Z])(?=.*[0-9]).{10,}$

別れる:

^
(?=.*[A-Z])  # At least an uppercase alphabet
(?=.*[0-9])  # At least a numeral
.{10,}       # Any character 10 or more times 
$
于 2013-09-19T09:56:30.363 に答える
1

どうやってその正規表現を取得したのかわかりません。どこかに持ち込まれたようです…

^(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$
     ^^^^      ^^^^^      ^^^^^      ^--------^
      1          2          3            4
  1. 8文字以上あることを確認してください

  2. 小文字があることを確認します

  3. 大文字があることを確認します

  4. これらの特殊文字があることを確認してください。

要件に合わせて正規表現を作成するには、いくつかの変更を行います。

^(?=.{10})(?=.*[0-9])(?=.*[A-Z]).*$
     ^^^^      ^^^^^      ^^^^^
      1          2          3
  1. 10文字以上あることを確認してください

  2. 少なくとも数があることを確認します。

  3. 少なくとも 1 つの大文字があることを確認します。

次を使用して、少し短くすることができます。

^(?=.*[0-9])(?=.*[A-Z]).{10,}$
于 2013-09-19T09:59:38.137 に答える
1
^                   # Start of group
    (?=.*\d)        #   must contain at least one digit
    (?=.*[A-Z])     #   must contain at least one uppercase character
       .            #   match anything with previous condition checking
         {10,}      #   length at least 10 characters
$                   # End of group

すなわち:

^(?=.*\d)(?=.*[A-Z]).{10,}$

ソース:

于 2013-09-19T10:00:26.427 に答える