求适用于HTML5密码输入框的正则表达式:符合多规则且首尾无特殊字符
没问题,这就给你搞定符合要求的正则表达式,顺便拆解每个部分的作用,方便你理解和按需调整:
符合要求的密码正则表达式
^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^a-zA-Z0-9])[a-zA-Z0-9].{6,18}[a-zA-Z0-9]$
正则规则拆解
^:锚定字符串的起始位置,确保匹配从开头开始(?=.*[A-Z]):正向预查断言,要求整个字符串中至少包含一个大写英文字母(A-Z)(?=.*[a-z]):正向预查断言,要求整个字符串中至少包含一个小写英文字母(a-z)(?=.*\d):正向预查断言,要求整个字符串中至少包含一个数字(0-9)(?=.*[^a-zA-Z0-9]):正向预查断言,要求整个字符串中至少包含一个非字母数字的特殊字符(比如!@#$%^&*等)[a-zA-Z0-9]:匹配密码的第一个字符,限制为字母或数字,确保不会以特殊字符开头.{6,18}:匹配密码中间的6-18个任意字符(加上首尾两个字符,总长度刚好落在8-20的要求范围内)[a-zA-Z0-9]:匹配密码的最后一个字符,限制为字母或数字,确保不会以特殊字符结尾$:锚定字符串的结束位置,确保匹配到结尾结束
HTML输入框示例
把正则直接放到pattern属性里,再配合title属性给出提示文案,用户输入不符合要求时会显示这个提示:
<label for="user-password">设置密码:</label> <input type="password" id="user-password" name="user-password" pattern="^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^a-zA-Z0-9])[a-zA-Z0-9].{6,18}[a-zA-Z0-9]$" title="密码要求:长度8-20字符,包含至少1个大写字母、1个小写字母、1个数字、1个特殊字符,且不能以特殊字符开头或结尾" required >
可选调整说明
如果需要限制特殊字符的范围(比如只允许!@#$%^&*这些常见符号),可以把正则里的[^a-zA-Z0-9]替换成你指定的字符集合,比如:
^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*])[a-zA-Z0-9].{6,18}[a-zA-Z0-9]$
这样就只允许用户输入这些指定的特殊字符,避免出现一些不兼容的奇怪符号。
内容的提问来源于stack exchange,提问作者C. Unit
相关产品推荐
相关产品推荐

