.net正则表达式涉及html标签

时间:2009-03-04 17:17:22

标签: .net regex

我正在寻找一个正则表达式来检测字符串是否只是一堆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

曾几何时我自己可以做到这一点,但已经太久了。

提前致谢。

编辑:我不在乎它们是否是真正的HTML标签。让我们在&lt;&gt;标记内部调用任何内容。如果开始标记与结束标记匹配,也不要在意。

3 个答案:

答案 0 :(得分:2)

用空字符串替换"<[^>]*>",修剪结果并检查之后是否还有其他内容。

答案 1 :(得分:0)

我曾经用它去除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(""));
}

答案 2 :(得分:0)

以下是Phil Haack撰写的关于使用regular express to match html

的文章

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