javascript RegExp:如何匹配多行和closetag
var ex = /(<script\s?[^>]*>)([\s\S]*)(<\/script>)/;
//Note: here is 2 script tags
var str = '<script>\nvar x=0;\n</script>\n<div>\nhtml\n</div>\n<script>var y=0;\n</script>'
str.replace(ex, function(full, prefix, script, suffix) {
return prefix + doSomething(script) + suffix;
})
但我得到了错误的脚本:var x=0;
..
我想要的是:var x=0;
和 var y=0;
var ex = /(<script\s?[^>]*>)([\s\S]*)(<\/script>)/;
//Note: here is 2 script tags
var str = '<script>\nvar x=0;\n</script>\n<div>\nhtml\n</div>\n<script>var y=0;\n</script>'
str.replace(ex, function(full, prefix, script, suffix) {
return prefix + doSomething(script) + suffix;
})
But I got wrong script: var x=0;</script><div>..</div><script>var y=0;
What I want is: var x=0;
and var y=0;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
此函数匹配
SCRIPT
元素内容并返回数组中的字符串:This function matches
SCRIPT
elements contents and returns the strings in an array:使用如下正则表达式:
在 Javascript 中,我们无法创建
.
dotall,因此我们使用 [\s\S] 字符类来匹配任何空格或非空格(包括换行符)的字符。?
用于非贪婪匹配,这样您就不会嵌套脚本标签。Use regex like below:
In Javascript we cannot make
.
dotall so we use the [\s\S] character class which matches any character either whitespace or not whitespace including newline.?
is for non-greedy match so that you don't nest script tags.