【发布时间】:2013-05-17 14:49:26
【问题描述】:
我试图创建一个匹配打开 HTML 标签的正则表达式。
<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>
是我想出的。它在 RegexPal.com http://gyazo.com/cef34f653c4a3483a31394330455c0cf 中运行良好 但是一旦我尝试在 JS(Chrome 和 Node)中的某些文本上使用它,就会发生这种情况:http://gyazo.com/0c938ee289c1632f3f576aaccda1f81e
规则是这样定义的:
var Rules = [
new RegExp("<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)/>"),
new RegExp("<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>"),
new RegExp("</\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>")
];
内容是这样定义的:
var Content = "<!DOCTYPE HTML><html><head><title>derp</title></head><body><div class=\"derp\"><!--this is formatted terribly -->derp<br /></div></body></html>";
【问题讨论】:
-
你知道他们在说什么 - 如果你有一个问题并尝试使用 RegEx 解决它,那么现在你有两个问题。
-
使用 reg exp 匹配 html 是个坏主意。
-
好吧,我只是在玩一些 HTML 语法,并尝试创建一个 Tokenizer。
-
你可以使用DOM来解析它..
标签: javascript regex