为什么这个正则表达式不会使特殊字符强制性

时间:2016-12-05 08:38:08

标签: regex

我有以下正则表达式:

  

(?=^.{7,14}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()_+}{":;'?\/>.<,])(?!.*\s).*$

这意味着匹配并执行以下密码策略:

  • One Capital
  • 一个小写
  • 一位数
  • 一个特殊的字符,即@

但是,它允许使用没有任何特殊字符的密码。

1 个答案:

答案 0 :(得分:1)

问题来自字符类中的html实体(字符类是一组字符,你不能把字符串放在里面),结果,包含q,u,o,t,e,g的字符串我成功了。

相反,您可以使用:

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!-@_{}])\S{7,14}$

(使用范围和ascii表缩短特殊字符的字符类)