Javascript正则表达式不包含带反斜杠的关键字

时间:2013-10-10 14:21:36

标签: javascript regex

我遇到了一个javascript正则表达式的问题,它必须注释掉脚本标记内的所有标记。但它无法注释掉id为“ignorescript”的特殊第一个脚本标记。

以下是regex的示例字符串:

<script id="ignorescript">
    var test = '<script>test<\/script>;
    var xxxx = 'x';
</script>

ignorescipt中的脚本标记有额外的反斜杠,因为它是JSON编码的(来自PHP)。

这是我必须得到的最终结果:

<script id="ignorescript">
    var test = '<!ignore-- <script>test<\/script> ignore-->;
    var xxxx = 'x';
</script>

以下示例有效:

content = content.replace(/(<script>.*<\\\/script>)/g,
    "<!--ignore $1 ignore-->");

但我需要检查它是否包含关键字“ignorescript”。如果该关键字出现,那么我不想替换任何东西。否则将忽略注释添加到整个脚本标记到目前为止,我已经做到了这一点:

content = content.replace(/(<script.((?!ignorescript).)*<\/script>)/g,
    "<!--ignore $1 ignore-->");

它有点有用,但不是它应该的样子。我在结尾标记中还有一个反斜杠。所以我把它改成了:

content = content.replace(/(<script.((?!ignorescript).)*<\\\/script>)/g,
    "<!--ignore $1 ignore-->");

不是它根本找不到任何东西。

1 个答案:

答案 0 :(得分:0)

终于有了工作。

这是工作正则表达式:

/(<script(?!\sid="ignorescript").*?<\\\/script>)/g
相关问题