【问题标题】:.net Regular Expression involving html tags.net 正则表达式涉及 html 标签
【发布时间】:2009-03-04 17:17:22
【问题描述】:

我正在寻找一个正则表达式来检测一个字符串是否不仅仅是一堆 HTML 标记。

因此,所需的功能是:

Input -> Output

"<html></html>" -> False

"<html>Hi</html>" -> True

"<a href='google.com'>Click Me</a>" -> True

"hello" -> True

"<bold><italics></bold></italics>" -> False

"" -> Don't care

曾几何时,我本可以自己完成,但时间太长了。

提前致谢。

edit:我不在乎它们是否是真正的 HTML 标签。让我们将 中的任何内容称为标签。也不关心开始标签是否与结束标签匹配。

【问题讨论】:

    标签: .net regex


    【解决方案1】:

    "&lt;[^&gt;]*&gt;"替换为空字符串,修剪结果,然后检查是否有任何剩余。

    【讨论】:

    • 感谢您的快速响应,我使用了这个方法,它成功了。
    【解决方案2】:

    这是 Phil Haack 写的一篇关于使用 regular express to match html 的文章。

    此外,如果您需要简单的代码行,请考虑将字符串加载到 XmlDocument 中。它会解析它,所以你会知道你是否有有效的 xml。

    【讨论】:

    • 我相信你有点误解了这个问题。
    【解决方案3】:

    我曾经用它来去除html标签:

    const string tagsPatterns = "\\s*<.*?>\\s*"; 
    value = System.Text.RegularExpressions.Regex.Replace(value, tagsPatterns, " "); 
    

    我想你可以玩一下(这个版本想保留空格),得到没有标签的字符串,并检查它是否不为空

    更新 1: 好了:)

    bool HasText(string value)
    {
        const string tagsPatterns = "<.*?>"; 
        value = System.Text.RegularExpressions.Regex.Replace(value, tagsPatterns, "");
        return value.Trim() != "";
    }
    [TestMethod]
    public void TestMethod2()
    {
        Assert.IsFalse(HasText("<html></html>"));
        Assert.IsTrue(HasText("<html>Hi</html>"));
        Assert.IsTrue(HasText("<a href='google.com'>Click Me</a>"));
        Assert.IsTrue(HasText("hello"));
        Assert.IsFalse(HasText("<bold><italics></bold></italics>"));
        Assert.IsFalse(HasText(""));
    }
    

    【讨论】:

      猜你喜欢
      • 2021-09-30
      • 1970-01-01
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 2011-05-03
      • 2011-05-01
      相关资源
      最近更新 更多