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