我遇到了一个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-->");
不是它根本找不到任何东西。
答案 0 :(得分:0)
终于有了工作。
这是工作正则表达式:
/(<script(?!\sid="ignorescript").*?<\\\/script>)/g