You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求适用于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:57:21