【发布时间】:2018-10-05 06:08:02
【问题描述】:
我正在编写一个 .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 验证,因为我可以使用在线工具证明这一点。我做错了什么?
【问题讨论】:
-
使用
@"<[a-z][\s\S]*>" -
@WiktorStribiżew 我已经尝试过这种方法,但又做了一次,结果还是一样。验证对所有值触发。另外,我不太确定我的问题是如何与链接的问题重复的?也许我很笨,但我不明白它是如何回答我的问题的。
-
好的,这意味着您只想在字符串包含
<{LETTER}{anything_here}>时显示错误,对吗?可能你想要@"^.*<[a-zA-Z][^>]*>.*$" -
@WiktorStribiżew 是的,我的目标是像
<test>或a <test>这样的字符串失败,但没有 html 实体的输入都可以正常工作。遗憾的是,正则表达式也不起作用,当我在文本框中输入a时,会触发验证警告。 -
@WiktorStribiżew 完成
标签: regex asp.net-mvc validation