繁体   English   中英

Javascript新的RegExp vs. / pattern /和多行

[英]Javascript new RegExp vs. /pattern/ and multi line

为什么是/ pattern /匹配,但RegExp不是?

<div id="foo">
##content##
<h1>works!</h1>
##/content##
</div>

<script>
var str = document.getElementById("foo").innerHTML;
console.log(str);

var r = new RegExp("##content##([\S\s]*)##\/content##", "img");

console.log(r.exec(str)); //null
console.log(str.match(/##content##([\S\s]*)##\/content##/img)); //matches
</script>

问题是这一行:

var r = new RegExp("##content##([\S\s]*?)##\/content##", "img");

它应该替换为:

var r = new RegExp("##content##([\\S\\s]*?)##\/content##", "img");

原因:理解RegExp对象将String作为构造的参数,你需要双重转义\\S\\s才能被RegEx引擎正确解释,因此\\S应该成为\\\\S和\\ s应该在你的正则表达式中成为\\\\s

暂无
暂无

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

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