多次使用否定前瞻(或将多个字符与^匹配)

Using negative lookahead multiple times (or matching multiple characters with ^)?

本文关键字:字符 匹配      更新时间:2023-09-26

我想做这样的事情:

/<script[^>]*>(?!<'/script>)*<'/script>/g

使用javascript匹配html字符串中的所有脚本标记。

我知道这行不通,但我似乎找不到任何其他解决方案。脚本标记可以使用src属性并在(<script src="..." type="text/javascript"></script>)之后自行关闭它,也可以在脚本标记(<script type="text/javascript">...</script>)中包含代码

您已关闭

/<script[^>]*>(?:(?!<'/script>).)*<'/script>/g

你一定有吃东西的实际脚本体。这就是.在这里的作用。

先行检查必须在每个字符之前进行,因此它被包装在一个额外的(非捕获)组中。要捕获组1中的脚本源代码,只需在(?:...)周围添加另一组parens,如注释中指出的@AlanMoore。

试试这个

/<script[^>]*>.*?<'/script>/g

我看不出有什么理由消极看待未来。.*?是一个惰性匹配,因此它只匹配到下一个结束标记,而不匹配到最后一个。