regex - 否定正则表达式以使用 MVC 验证属性

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

如果没有找到匹配项返回 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]*)$).*$"

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

关于regex - 否定正则表达式以使用 MVC 验证属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36663604/

相关文章:

regex - Delphi中的RegEx剥离回车符和换行符

.net - ASP.NET MVC 中的用户身份验证和授权

asp.net-mvc - 如何在运行时设置默认值以在 MVC 中选择列表

java - 英语和阿拉伯语组合的正则表达式

html - 从 HTML 中提取文本的正则表达式

java - 检查java中记录的模式

asp.net-mvc - 在 MVC.NET 中测试 User.IsInRole

ruby-on-rails - 网址验证 rails

javascript - 即时验证输入

c# - 在特定设置上使用正则表达式