给定:
var regexp = new RegExp("<~~include(.*?)~~>", "g");
Run Code Online (Sandbox Code Playgroud)
在javascript中,将变量分配给匹配的任何内容的简单方法是什么?*?
我可以做到这一点,但它有点难看:
myString.match(regexp).replace("<~~include", "").replace("~~>", "");
Run Code Online (Sandbox Code Playgroud)
Javascript应该在正则表达式匹配上返回一个数组对象,其中数组的零索引是匹配的整个字符串,以下索引是捕获组.在你的情况下像:
var myVar = regexp.exec(myString)[1];
应该将(.*?)捕获组的值分配给myVar.
(来自MDC的报价)
在正则表达式模式中包括括号会导致记住相应的子匹配.例如,
/a(b)c/匹配字符'abc'并记住'b'.
由于.*?是第一个(也是唯一一个)记住的匹配,因此请$1在替换字符串中使用:
var foo = myString.replace(regexp, '$1');
Run Code Online (Sandbox Code Playgroud)
编辑:根据您的评论,您也可以(可能有更明确的意图)这样做:
var foo = regexp.exec(myString)[1];
Run Code Online (Sandbox Code Playgroud)