繁体   English   中英

RegEx匹配两种模式之间的所有内容(javascript)

[英]RegEx Match everything between two patterns (javascript)

在下面的示例中,正则表达式必须匹配脚本标记之间的所有内容,包括脚本标记本身,但不能选择其他任何内容。

<unmodified html content> <script> * </script> <more unmodified html>

我到目前为止最接近的是:

(<script>)[^~]*(</script>)

测试标记:

    <p> blah blah blah
    </p> <span class="timestamp"><span class="hurrrp" id="faate_dd4dd">Nov 6, 2013</span>
        <script>
            if (FancyDate) FancyDate.add('derpaderp_1386447', 1385, 'MAIL_FORMAT');
        </script>
        </span>
    <p> blah blah blah
    </p> <span class="timestamp"><span class="hurrrp" id="faate_dd4dd">Nov 6, 2013</span>
        <script>
            if (FancyDate) FancyDate.add('derpaderp_1386447', 1385, 'MAIL_FORMAT');
        </script>
        </span>

你只需要让这个明星变得懒惰:

(<script>)[^~]*?(</script>)

REY Regex编辑

我敢肯定,如果你等了足够长的时间,有人会指出,“你不用正则表达式解析HTML!” 但是这应该是没问题的 在你的JavaScript中。

我也不太明白[^~]的观点,但也许还有另一个我不知道的原因?

如果没有理由,你可以使用它,这将有效,以防有人偷偷摸摸:

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

REY

如果您使用XRegExp,您可以打开(s)dot all标志,然后执行以下操作:

(<script>).*?(</script>)

REY

我正在考虑使用一个否定的前瞻(?!</script>)但那时结果不会被捕获,所以我放弃了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM