【发布时间】:2020-04-12 08:01:25
【问题描述】:
我知道有很多类似的问题,但这是我的正则表达式特有的。 我正在尝试查看字符串中是否包含任何 html。
Regex tagRegex = new Regex(@"<\s*([^ >]+)[^>]*>.*?<\s*/\s*\1\s*>")
if(tagRegex.IsMatch(body))
{
*do something*
}
但由于灾难性的回溯,它在 IsMatch 部分失败。谁能告诉我正则表达式有什么问题?
谢谢
【问题讨论】:
-
是的,这个片段
( [^ >]+ )吹过</junk>或<tag\nsome junk/>之类的标签,然后继续尝试将\1放入其中。这是一个缓慢的过程。 -
您是要匹配 不可见的内容 还是只是打开/关闭标签?
-
我建议将其用于不可见内容
<(?:(script|style|object|embed|applet|noframes|noscript|noembed)(?:\s+(?>"[\S\s]*?"|'[\S\s]*?'|(?:(?!/>)[^>])?)+)?\s*>)[\S\s]*?</\1\s*> -
你可以使用这个
<(?:([\w:]+)(?:\s+(?>"[\S\s]*?"|'[\S\s]*?'|(?:(?!/>)[^>])?)+)?\s*>)[\S\s]*?</\1\s*>,但它会像<html> to </html>一样匹配我建议只使用下一个标签正则表达式来查看它是否有html。见下。