最少3个字符,全部小写,最多可使用2个数字,不允许使用特殊字符。我尝试使用^[a-zA-Z 0 -9]*$,但无法限制使用的数字谁能帮帮我。
nbysray51#
您可以使用负的前瞻Assert来排除3位以上的数字:
/^(?!(?:.*\d+){3,})[a-z0-9]{3,}$/
下面是对该模式的解释:
^
(?!(?:.*\d+){3,})
[a-z0-9]{3,}
$
这是一个可以正常工作的demo。
jjhzyzn02#
如果至少有3个允许的字符,则可以使用check,然后匹配0、1或2个数字。
^(?=[A-Za-z\d]{3})[A-Za-z]*(?:\d[A-Za-z]*){0,2}$
(?=[A-Za-z\d]{3})
[A-Za-z]*
(?:\d[A-Za-z]*){0,2}
查看regex101上的匹配项。
2条答案
按热度按时间nbysray51#
您可以使用负的前瞻Assert来排除3位以上的数字:
下面是对该模式的解释:
^
从字符串的开头开始(?!(?:.*\d+){3,})
Assert不出现3个或更多数字[a-z0-9]{3,}
则匹配3个或更多小写字母或数字$
字符串结尾这是一个可以正常工作的demo。
jjhzyzn02#
如果至少有3个允许的字符,则可以使用check,然后匹配0、1或2个数字。
^
字符串开始(?=[A-Za-z\d]{3})
正前视,Assert3个允许的字符[A-Za-z]*
匹配可选字符A-Za-z(?:\d[A-Za-z]*){0,2}
重复0 - 2次匹配单个数字和可选字符A-Za-z$
字符串结束查看regex101上的匹配项。