如何在 ASP.NET MVC 模型验证中检查字符串是不是包含 HTML 代码?
Posted
技术标签:
【中文标题】如何在 ASP.NET MVC 模型验证中检查字符串是不是包含 HTML 代码?【英文标题】:How to check if a string contains HTML code in ASP.NET MVC model validation?如何在 ASP.NET MVC 模型验证中检查字符串是否包含 HTML 代码? 【发布时间】:2016-06-12 12:26:17 【问题描述】:我有一个模型字符串,看起来像:
bla bla bla <b>asdad</b> bla bla bla bla <u>bla</u> ...
我的模特:
public class MyModel
[RegularExpression( @"^(<\s*([^ >]+)[^>]*>.*?<\s*\/\s*\1\s*>)$", ErrorMessage = "No tag is allowed !")]
public string Text get; set;
我试图否定上面的正则表达式(我知道我没有正确使用,我不知道如何正确地做到这一点)
我想在Text
包含任何匹配的html代码时显示错误,即使它没有封闭标签,意思是遇到时应该发生:
<b>
没有</b>
</b>
或类似
如何使用正则表达式实现这一点?
【问题讨论】:
我在 regex101 中尝试过,但不起作用意味着任何不是 html 标记的单词都不会突出显示 你最好在标题和这篇文章中明确这一点,而不是在评论中。这将使愿意提供帮助的人更容易。 【参考方案1】:这是它的正则表达式:
<(\s*[(\/?)\w+]*)
它会检查是否存在单个结束标记或开始标记,它是否匹配。
DEMO here
【讨论】:
好的,上面的正则表达式可以取反吗? 否定表示,不应该匹配html标签(字符串中不应该有html标签)? 是的,完全正确...如果可能的话,我希望突出显示不在<
和>
之间的所有文本...
你可以像这样使用:^((?![<>]).)*$
这看起来不太可靠——它会匹配“5 is
【参考方案2】:
如果模型字符串不包含 HTML 标记,则以下正则表达式匹配:
^((?!\<(|\/)[a-z][a-z0-9]*>).)*$
演示是HERE
【讨论】:
更新了正则表达式。我之前误解了。以上是关于如何在 ASP.NET MVC 模型验证中检查字符串是不是包含 HTML 代码?的主要内容,如果未能解决你的问题,请参考以下文章