我试图创建一个匹配打开 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>";