在所有输入上触发自定义正则表达式验证

挂脖

我正在编写一个 .NET MVC 应用程序,并使用不显眼的验证来根据我的模型中的数据注释来清理我的客户端输入。我有一个输入,我不想允许 HTML 标签进入,如果输入了 html 标签,我希望显示自定义错误消息。因此,我使用自定义正则表达式创建了一个数据注释来涵盖这些条件,如下所示:

[Required(ErrorMessage = "You must provide a First Name.")]
[RegularExpression(@"<[a-z][\s\S]*>", ErrorMessage = "Invalid character")]
[DisplayName("First Name")]
public string FirstName { get; set; }

与此有关的问题是,无论是什么字符,无论是<test>或否abc都会导致Invalid Character消息出现。required 属性工作正常,如果我尝试一个简单的正则表达式,例如:

[RegularExpression("[a-z]", ErrorMessage = "Invalid character")] 

这 100% 符合预期,让我相信我的正则表达式不正确,但我知道它适用于 HTML 验证,因为我可以使用在线工具证明这一点。我究竟做错了什么?

托马斯·阿尤布

如果您查看 RegularExpressionAttribute 的文档,它会指出:

指定 ASP.NET 动态数据中的数据字段值必须与指定的正则表达式匹配。

因此,您的属性与您想要做的完全相反:

[RegularExpression(@"^(?!.*<.*>).*$", ErrorMessage = "Invalid character")]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章