Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多次使用负前瞻(或将多个字符与^匹配)?_Javascript_Regex - Fatal编程技术网

Javascript 多次使用负前瞻(或将多个字符与^匹配)?

Javascript 多次使用负前瞻(或将多个字符与^匹配)?,javascript,regex,Javascript,Regex,我想这样做: /<script[^>]*>(?!<\/script>)*<\/script>/g /]*>(?!)*/g 使用javascript匹配html字符串中的所有脚本标记 我知道这行不通,但我似乎找不到任何其他解决办法。 脚本标记可以使用src属性并在()之后自行关闭,也可以包含脚本标记中的代码(..) /<script[^>]*>(?:(?!<\/script>).)*<\/script>/g

我想这样做:

/<script[^>]*>(?!<\/script>)*<\/script>/g
/]*>(?!)*/g
使用javascript匹配html字符串中的所有脚本标记

我知道这行不通,但我似乎找不到任何其他解决办法。 脚本标记可以使用src属性并在(
)之后自行关闭,也可以包含脚本标记中的代码(
..

/<script[^>]*>(?:(?!<\/script>).)*<\/script>/g
/]*>(?:(?!)*/g
你必须吃点东西才能吃到真正的脚本主体。这就是
在这里所做的

前瞻检查必须在每个字符之前进行,因此它被包装在一个额外的(非捕获)组中。要捕获组1中的脚本源代码,只需在
(?:…)
周围添加另一组参数,就像@alanmore在注释中指出的那样。

试试这个

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

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

@Denis:不是要求的一部分。不过也没关系。从我所看到的情况来看,OP足够熟练,可以自己完成这项工作。:)更正:要捕获脚本源代码,您需要添加另一组参数:
((?:(?!))*)
。如果您只是从现有组中删除了
?:
-
((?!))*
,您将只捕获源代码的最后一个字符。