贪婪的正则表达式量词与密码条件不匹配
Greedy regex quantifier not matching password criteria
/(^[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]+)?$/
见regex demo。请注意,在针对正则表达式验证整个输入字符串时,不应使用 g
修饰符。
详情
^
- 字符串开头
(?=.{6,16}$)
- 字符串输入中的 6 到 16 个字符 allowed/required
[a-zA-Z]
- 一个字母作为第一个字符
[a-zA-Z0-9]*
- 0+ 个字母数字字符
(?:-[a-zA-Z0-9]+)?
- -
的可选序列,然后是 1+ 个字母数字字符
$
- 字符串结尾。
所有你需要的
^(?i)(?=.{6,16}$)(?!.*-.*-)[a-z][a-z\d-]*\d[a-z\d-]*(?<!-)$
可读
^
(?i)
(?= .{6,16} $ ) # 6 - 16 chars
(?! .* - .* - ) # Not 2 dashes
[a-z] # Start letter
[a-z\d-]* # Optional letters, digits, dashes
\d # Must be digit
[a-z\d-]* # Optional letters, digits, dashes
(?<! - ) # Not end in dash
$
好吧,至少我的正则表达式强制显示一个数字。
/(^[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]+)?$/
见regex demo。请注意,在针对正则表达式验证整个输入字符串时,不应使用 g
修饰符。
详情
^
- 字符串开头(?=.{6,16}$)
- 字符串输入中的 6 到 16 个字符 allowed/required[a-zA-Z]
- 一个字母作为第一个字符[a-zA-Z0-9]*
- 0+ 个字母数字字符(?:-[a-zA-Z0-9]+)?
--
的可选序列,然后是 1+ 个字母数字字符$
- 字符串结尾。
所有你需要的
^(?i)(?=.{6,16}$)(?!.*-.*-)[a-z][a-z\d-]*\d[a-z\d-]*(?<!-)$
可读
^
(?i)
(?= .{6,16} $ ) # 6 - 16 chars
(?! .* - .* - ) # Not 2 dashes
[a-z] # Start letter
[a-z\d-]* # Optional letters, digits, dashes
\d # Must be digit
[a-z\d-]* # Optional letters, digits, dashes
(?<! - ) # Not end in dash
$
好吧,至少我的正则表达式强制显示一个数字。