Javascript - 只获取正则表达式匹配的可变部分

时间:2010-08-04 20:23:42

标签: javascript regex

下式给出:

var regexp = new RegExp("<~~include(.*?)~~>", "g");

javascript中最简单的方法是将变量分配给匹配的任何内容。*?

我能做到这一点,但这有点难看:

myString.match(regexp).replace("<~~include", "").replace("~~>", "");

3 个答案:

答案 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)

您可以将lookahead用作此正则表达式的一部分。见这里:

Regular expression for extracting a number

和/或此处:

http://www.regular-expressions.info/lookaround.html