
[英]JavaScript and regular expressions: literal syntax Vs. RegExp object
[英]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.