【问题标题】:Negating a regex for use MVC validation attributes否定正则表达式以使用 MVC 验证属性
【发布时间】:2016-08-08 09:33:08
【问题描述】:

如果没有找到匹配返回 true 以用于正则表达式属性(MVC 数据注释),我们可以否定这个表达式吗?

模式应该匹配:

  1. 少于 8 个字符的任何内容或
  2. 任何没有数字的东西或
  3. 任何不带大写或的东西
  4. 任何没有特殊字符的东西

我想否定这个表达式/模式

[RegularExpression(@"^(.{0,7}|[^0-9]*|[^A-Z]*|[a-zA-Z0-9]*)$")]

我尝试?! 没有成功:

[RegularExpression(@"^(?!.{0,7}|[^0-9]*|[^A-Z]*|[a-zA-Z0-9]*)$")]

参考这个答案:Regex password validation, reverse logic

【问题讨论】:

  • 你可以试试"^(?!(?:.{0,7}|[^0-9]*|[^A-Z]*|[a-zA-Z0-9]*)$).*$"
  • @WiktorStribiżew,被动非捕获组是缺失的部分。谢谢它有效!您可以将其发布为答案,我会接受。

标签: regex asp.net-mvc validation c#-4.0 regex-negation


【解决方案1】:

要对包含多个锚定备选方案的表达式求反,您需要将它们分组到锚定的否定前瞻中。

因此,只需添加一个组(捕获或非捕获):

"^(?!(?:.{0,7}|[^0-9]*|[^A-Z]*|[a-zA-Z0-9]*)$).*$"

由于RegularExpressionAttribute 需要完整的字符串匹配,我添加了.*$

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-02-08
    相关资源
    最近更新 更多