贪婪的正则表达式量词不符合密码条件


/(^[a-zA-Z]+-?[a-zA-Z0-9]+){5,15}$/g

正则表达式标准
匹配长度必须介于 6 到 16 个字符之间(含
只能
以字母开头必须包含字母、数字和一个可选的连字符
不得以连字符结尾

上述正则表达式不满足所有 4 个条件。 尝试将^移到组之前并省略+量词,但不起作用

您正在对已经具有量化子模式的组设置限制量词,因此长度限制将不起作用。

要设置长度限制,请在^后添加(?=.{6,16}$)展望,然后随意设置您的消费模式。

您可以使用

/^(?=.{6,16}$)[a-zA-Z][a-zA-Z0-9]*(?:-[a-zA-Z0-9]+)?$/

请参阅正则表达式演示。请注意g根据正则表达式验证整个输入字符串时,不应使用修饰符。

  • ^ - 字符串的开头
  • (?=.{6,16}$) - 允许/需要字符串输入中的 6 到 16 个字符
  • [a-zA-Z] - 一个字母作为第一个字符
  • [a-zA-Z0-9]* - 0+ 字母数字字符
  • (?:-[a-zA-Z0-9]+)? - 可选的-序列,然后是 1+ 字母数字字符
  • $ - 字符串的结尾。

你需要的一切

^(?i)(?=.{6,16}$)(?!.*-.*-)[a-z][a-zd-]*d[a-zd-]*(?<!-)$

 ^ 
 (?i)
 (?= .{6,16} $ )               # 6 - 16 chars
 (?! .* - .* - )               # Not 2 dashes
 [a-z]                         # Start letter
 [a-zd-]*                     # Optional letters, digits, dashes
 d                            # Must be digit
 [a-zd-]*                     # Optional letters, digits, dashes
 (?<! - )                      # Not end in dash
 $ 

好吧,至少我的正则表达式强制存在一个数字。

最新更新