0

我想使用 jQuery.match() 函数验证字符串。字符串必须包含

  1. 最少 10 个字符。
  2. 必须包含至少一个数字。
  3. 必须包含至少一个大写字母。

我怎样才能做到这一点?谁能告诉我正则表达式来做到这一点?

我已经有了这个:

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

但它仅像这样进行验证,允许至少一个特殊字符,一个大写,一个小写(以任何顺序)。

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. 确保至少有一个大写字母。

您可以使用以下方法将其缩短一点:

^(?=.*[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

IE:

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

资源:

于 2013-09-19T10:00:26.427 回答