正则表达式不能将下划线(_)识别为特殊字符

时间:2019-04-23 03:21:21

标签: regex

我的正则表达式要求

  • 包括1个大写字母
  • 包括1个小写字母
  • 包括1个数字位
  • 包括1个特殊字符
(/^(?=^.{8,40}$)(?=.*\d)(?=.*\W+)(?=.*[a-z])(?=.*[A-Z])(?!^.*\n).*$/)

但是,如果我输入1234ABcd_时验证失败,则只有_似乎未被识别为特殊字符。我的正则表达式上有什么解决方案吗?谢谢!

1 个答案:

答案 0 :(得分:4)

您似乎正在使用(?=.*\W+)来匹配特殊字符。但是_\w中的单词字符,而\W是其他所有字符,因此与_不匹配。将其更改为:(?=.*[\W_]+)

此外,您不需要+。您只需匹配1即可成功。