【问题标题】:I have regex but its not catch angle bracket我有正则表达式,但它没有抓住尖括号
【发布时间】:2021-06-25 07:52:55
【问题描述】:

我有正则表达式:

[RegularExpression(@"^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,40}$", 
                   ErrorMessage = "Minimum 8, max 40 characters atleast 1 Uppercase, 1 Lowercase, 1 Number and 1 Special Character")]

我不需要像 (尖括号) 这样的特殊字符。那么有人可以帮助我吗?

【问题讨论】:

  • 请注意,此处不需要捕获组和 {1,} 量词。此外,您可以安全地摆脱 \d\W 周围的 [](如果您匹配多个字符和/或一系列字符,则只需要一个字符类)。有关改进的模式,请参阅下面的答案。

标签: regex regex-negation


【解决方案1】:

您可以使用以下模式:

^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W)[^\s<>]{8,40}$

Demo.

请注意,您的原始模式有一些多余的部分。例如,捕获组、一些字符类和{1,} 量词;所以,他们被删除了。

模式分解:

  • ^ - 字符串的开头。
  • (?=.*[A-Z]) - 必须至少包含一个大写字母。
  • (?=.*[a-z]) - 必须至少包含一个小写字母。
  • (?=.*\d) - 必须至少包含一位数字。
  • (?=.*\W) - 必须至少包含一个非单词字符。
  • [^\s&lt;&gt;]{8,40} 匹配 8 到 40 个字符,不包括空格字符和尖括号。
  • $ - 字符串结束。

【讨论】:

    猜你喜欢
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多