我遇到了一个 javascript 正则表达式的问题,它必须注释掉脚本标签内的所有标签。但它不能注释掉 id 为“ignorescript”的特殊第一个脚本标签。
这是正则表达式的示例字符串:
<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-->");
不是它根本找不到任何东西。