验证:字符串只能包含<div>标记

时间:2019-05-20 18:02:52

标签: c# validation

如果字符串包含除ctid之外的任何其他HTML标签,如何验证?

需要查看,字符串是否包含除products之外的其他元素。

实现此目标的最佳方法是什么。

如果通过正则表达式获得此结果的任何方法都很好,但不确定是否要准备正则表达式以验证这种情况。

有效字符串的示例:

<div></div>

无效的字符串,因为它包含的HTML标记不是DIV

This is the data received from external <div>data string</div>. string <div>valid string</div>

1 个答案:

答案 0 :(得分:2)

您需要使用节点程序包管理器控制台安装HtmlAgilityPack

install-package htmlagilitypack

然后您可以像这样使用它:

using System.Linq;
using HtmlAgilityPack;

    static void Main(string[] args)
    {
        var validstring =
            "This is the data received from external<div> data string</ div >. string <div>valid string</ div >";
        var invalidstring =
            "This is the data received from external <p>data string</p>. string <div>valid string</div>";

        var b1 = IsStringValid(validstring); // returns true
        var b2 = IsStringValid(invalidstring); // returns false
    }

    static bool IsStringValid(string str)
    {
        var pageDocument = new HtmlDocument(); // Create HtmlDocument
        pageDocument.LoadHtml(str); // Load the string into the Doc

        // check if the descendant nodes only have the names "div" and "#text"
        // "#text" is the name of any descendant that isn't inside a html-tag
        return !pageDocument.DocumentNode.Descendants().Any(node => node.Name != "div" && node.Name != "#text");
    }