提问人:Ignorant Necromancer 提问时间:9/28/2022 更新时间:9/28/2022 访问量:245
ASP-NET:数据注释正则表达式不起作用
asp-net: data-annotation regex DOESN'T WORK
问:
ASP-NET MVC 项目
我尝试将常规环绕表达式设置为表单的密码字段。我尝试过的一个简单的例子是检查用户是否使用 System.ComponentModel.DataAnnotations 写了一个大写字母。
例子:
- [RegularExpression(“(?=.*[A-Z])”, ErrorMessage = “你必须写 大写字母“)]
我在这个网页中证明了这个正则表达式:http://regexstorm.net/tester 我认为这个赞助人是正确的。
在登录视图中,我使用指令 [email protected] 来检查模型是否正确,如果不是,服务器会在视图中打印错误消息,这总是会发生。
答:
0赞
Wiktor Stribiżew
9/28/2022
#1
您必须提供一个模式,该模式在使用正则表达式时使用整个字符串(请参阅 RegularExpression Validation 属性无法正常工作)。您的正则表达式模式仅与字符串位置的开头匹配,因为是断言字符串开始位置的锚点,并且 是正向展望,一种非消费模式,如果除换行符字符以外的零个或多个字符,则返回“true”尽可能多的字符,然后是 ASCII 大写字母。RegularExpressionAttribute
^(?=.*[A-Z])
^
(?=.*[A-Z])
你可以使用
[RegularExpression(@"^.*[A-Z].*", ErrorMessage = "You have to write a capital letter")]
或者,一个更有效的
[RegularExpression(@"^[^A-Z]*[A-Z].*", ErrorMessage = "You have to write a capital letter")]
如果输入文本中可能有换行符,请替换为:.
[\w\W]
[RegularExpression(@"^[^A-Z]*[A-Z][\w\W]*", ErrorMessage = "You have to write a capital letter")]
细节:
^
- 字符串的开头[^A-Z]*
- 除 ASCII 大写字母以外的零个或多个字符[A-Z]
- 大写字母[\w\W]*
- 尽可能多地使用零个或多个字符。
评论