RegEx获取脚本标记的属性和主体

时间:2009-11-17 17:45:45

标签: html regex

我正在使用此正则表达式来查找< script>标记:

<script (.|\n)*>(.|\n)*?</script>

问题是,它匹配下面的ENTIRE字符串,而不仅仅是每个标签:

<script src="crap2.js"></script><script src="crap2.js"></script>

7 个答案:

答案 0 :(得分:8)

由于这个原因以及各种其他原因,你最好使用DOM来处理HTML。

答案 1 :(得分:7)

除了RegEx match open tags except XHTML self-contained tags之外,我认为不需要说任何其他内容。

答案 2 :(得分:7)

将您的第一个*更改为*?

这是非贪婪的'全部匹配',因此它将匹配下一个'&gt;'之前的最小字符集。

答案 3 :(得分:7)

另见本周的编码恐怖片:Parsing Html The Cthulhu Way,灵感来自@JS Bangs链接的史诗answer by @bobince

答案 4 :(得分:2)

I'll keep posting links to my previous answers直到此问题类型被清除来自这个星球的表面(希望在10年左右):不要使用不规则语言(如html或xml)的正则表达式。改为使用解析器。

答案 5 :(得分:0)

<script[\s\S]*?>[\s\S]*?</script>

这符合最常见的情况,但考虑JS Bangs answer 非常非常重要。

答案 6 :(得分:-1)

尝试排除任何'&lt;'来自内容

 <script (.|\n)*>(.|\n|[^<])*?</script>