正则表达式校验,不包含特殊字符,只包含英文和数字的组合

要求:数字和英文字母的组合,必须至少含有一个大写英文字符,至少一小写英文字符,至少一个一个数字,不包含特殊字符,8-31位。
下面是我的正则校验

password: /(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{8,31}/

如果刚输入的字符满足既包含大小写英文字母,又包含数字,后面接特殊字符是检验成功的,但正常是不可以的。
比如字符串 hjHghdhgd45HGHJ45#$%^&*,是检验成功的,但这样是错误的。
指点这个正则到底问题在哪

阅读 14.9k
3 个回答

因为你的字符串存在符合配置的内容, 而又没有做起始结束限制. 加上 ^$ 就好了.
/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9]{8,31}$/

前后缺少通配符
^:匹配所有以指定正则表达式开始的行。
$:匹配所有以指定正则表达式结束的行。
加上这两个就可以了

你没有加上开头^和结尾$

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题