正则表达式检查字符串中是否有任何有效的脚本标记

时间:2019-01-30 01:19:23

标签: javascript regex

我想在可能有注释也可能没有注释的HTML字符串中匹配脚本标签。

一些例子

<!-- <script>...</script> --> <script src='test.js'></script>
<!-- <script>...</script> -->

我只想匹配第一个示例。

这是我想出的,但是它不起作用,任何帮助,我们都感激不尽。谢谢

/(<!--.*?-->)*.*<script[\s>\/]/gmi

3 个答案:

答案 0 :(得分:0)

使用DOMParser解析字符串以获取HTML树,然后使用querySelectorAll来计数元素。

请参见下面的代码段

var str = "<!-- <script>...<\/script> --> <script src='test1.js'><\/script><!-- <script>...<\/script> --><script src='test2.js'><\/script>";

var parser = new DOMParser();

var doc = parser.parseFromString(str, 'text/html');

var howManyScripts = doc.querySelectorAll('script').length;

console.log(howManyScripts);

答案 1 :(得分:0)

尝试使用此正则表达式:

<script src=['"]{1}.+['"]{1}>[.\s]*<\/script>

答案 2 :(得分:0)

这个正则表达式适用于大多数脚本标签情况

例如。

/([<&][a-z]*[;]*)(script( .+[=]["'].+["'])*)([>&]*[a-z]*[;]*)([^>]*([<&][a-z]*[;]*)*(\/script)([>&]*[a-z]*[;]*))*/gi