上下文:我有一些动态生成的HTML,里面可以嵌入javascript函数调用。我试图用正则表达式提取函数调用。
示例HTML字符串:
<dynamic html>
<script language="javascript">
funcA();
</script>
<a little more dynamic html>
<script language="javascript">
funcB();
</script>
我的目标是提取文本&#34; funcA();&#34;和&#34; funcB();&#34;从上面的片段(作为单个字符串或具有两个元素的数组将是好的)。我到目前为止的正则表达式是:
var regexp = /[\s\S]*<script .*>([\s\S]*)<\/script>[\s\S]*/gm;
使用html_str.replace(regexp, "$1")
仅返回&#34; funcB();&#34;。
现在,当HTML中只有一组<script>
个标签时,这个正则表达式工作正常,但是当有多个时,它只在使用replace()方法时返回最后一个。即使删除&#39; / g&#39;修饰符仅匹配最后一个函数调用。我仍然是正则表达式的新手,所以我知道我在这里缺少一些基本的东西......任何帮助我指向正确方向的人都会非常感激。我已经做了一些研究,但仍然无法解决这个问题。
答案 0 :(得分:5)
你的通配符都很贪心。这意味着它们不仅符合您的期望,而且符合您的代码中的可能性。
让他们都非贪婪(.*?
),它应该有效。