JavaScript 正则表达式未检测到

标签 javascript regex

我尝试创建一个与打开 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>";

最佳答案

问题是如果你想使用RegExp(),你需要将\加倍。

 new RegExp("<\\w+((\\s+...

最好放弃 RegExp 并仅使用 /regExp/

var Rules = [
    /<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)/>/,
    /<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>"/,
    /</\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>/
];

关于JavaScript 正则表达式未检测到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611956/

相关文章:

javascript - 知道如何检查一个 div 中是否只包含一个图像标签吗?

regex - Python重新转义正则表达式模式中的巧合括号

R 捕获括号内的字符串

regex - 不确定我是否理解正则表达式 : (\b\w+)\1\b?

javascript - JSX 传播运算符的使用

javascript - 字符串转json数组

javascript - Chrome 浏览器中的打开/保存对话框

javascript - 如何在 React 组件中渲染状态数组。该数组在状态下可用,但在渲染时显示未定义

regex - 使用 RewriteRule 从重定向中删除主题标签

c# - 正则表达式非贪婪匹配