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

Tyi*_*ilo 3 javascript regex

我想做这样的事情:

/<script[^>]*>(?!<\/script>)*<\/script>/g
Run Code Online (Sandbox Code Playgroud)

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

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

Tom*_*lak 6

你很亲密

/<script[^>]*>(?:(?!<\/script>).)*<\/script>/g
Run Code Online (Sandbox Code Playgroud)

你必须有东西吃实际的脚本体.这就是.这里的作用.

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

  • 更正:要捕获脚本源代码,您需要添加另一组parens:`((?:(?!<\/script>).)*)`.如果你只是从现有的组中移除了`?:` - ((?!<\/script>).)*` - 你最终只会捕获源代码的最后一个*字符*. (2认同)