【问题标题】:Regex doesn't recognize underscore ( _ ) as special character正则表达式不将下划线 ( _ ) 识别为特殊字符
【发布时间】:2019-04-23 03:21:21
【问题描述】:

我的正则表达式要求

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

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

【问题讨论】:

  • 您的正则表达式中没有_。也许这应该是你的攻角:-)
  • 这个正则表达式中没有任何部分可以检查“特殊字符”,但是您可以定义这些。有一个\W,它检查非“单词”字符,但这与您使用的“特殊字符”概念不同。
  • 下划线被认为是一个单词字符,所以它不包含在\W中。

标签: regex


【解决方案1】:

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

另外,你不需要+。只需匹配 1 即可成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-17
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多