![](/img/trans.png)
[英]Javascript regex to match between two patterns, where first pattern is optional
[英]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>)
我敢肯定,如果你等了足够长的时间,有人会指出,“你不用正则表达式解析HTML!” 但是这应该是没问题的 在你的JavaScript中。
我也不太明白[^~]
的观点,但也许还有另一个我不知道的原因?
如果没有理由,你可以使用它,这将有效,以防有人偷偷摸摸:
(<script>)[\s\S]*?(</script>)
如果您使用XRegExp,您可以打开(s)dot all标志,然后执行以下操作:
(<script>).*?(</script>)
我正在考虑使用一个否定的前瞻(?!</script>)
但那时结果不会被捕获,所以我放弃了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.