否定正则表达式以使用 MVC 验证属性
Negating a regex for use MVC validation attributes
如果在正则表达式属性(MVC 数据注释)中找不到 return true 的匹配项,我们是否可以否定此表达式?
模式应匹配:
- 少于 8 个字符的任何内容或
- 任何没有数字的东西或
- 没有大写的任何东西或
- 任何没有特殊字符的东西
我要否定这个expression/pattern
[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
需要完整的字符串匹配,我添加了 .*$
.
如果在正则表达式属性(MVC 数据注释)中找不到 return true 的匹配项,我们是否可以否定此表达式?
模式应匹配:
- 少于 8 个字符的任何内容或
- 任何没有数字的东西或
- 没有大写的任何东西或
- 任何没有特殊字符的东西
我要否定这个expression/pattern
[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
需要完整的字符串匹配,我添加了 .*$
.