繁体   English   中英

C#正则表达式检查字符串包含html

[英]C# regex check string contains html

我正在使用以下正则表达式模式来检查包含html的字符串。

string input = "<a href=\"www.google.com\">test</a>";
const string pattern = "</?\\w+((\\s+\\w+(\\s*=\\s*(?:\".*?\"|'.*?'|[^'\">\\s]+))?)+\\s*|\\s*)/?>";
Regex reg = new Regex(pattern);
var matches = reg.Matches(input);

它可以正常工作,但是如果字符串文本值包含<或>字符,它也将返回true,但不应返回true。 例如,以下内容在我们的系统中不被视为HTML标记。

string input = "<test>";

如何为<//>添加AND

谢谢

我不会使用正则表达式来解析或验证HTML。 您可以使用HtmlAgilityPack

string input = "<a href=\"www.google.com\">test</a>";

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(input);
bool isValidHtml = doc.ParseErrors.Count() == 0;  // true

如果只允许特定标签,则可以创建允许标签的白名单:

var whiteList = new List<string> { "a", "b", "img", "#text" }; //fill more whitelist tags
bool isValidHtmlAndTags = doc.ParseErrors.Count() == 0 && doc.DocumentNode.Descendants()
    .All(node => whiteList.Contains(node.Name));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM