给定字符串之间的每个字符

时间:2014-12-29 22:38:23

标签: javascript regex string substring match

我需要一个在两个字符串之间的字符串数组但是当我使用str.match时,结果不是我所期望的:

var text = "first second1 third\nfirst second2 third\nfirst second3 third";
var middles = text.match(/first (.*?) third/g);
console.log(middles);  //this should be ["second1", "second2", "second3"]

结果:

["first second1 third", "first second2 third", "first second3 third"]

我是否可以尝试每次出现只获得中间字符串?

1 个答案:

答案 0 :(得分:1)

来自RegExp.prototype.exec()的文档:

  

如果你的正则表达式使用" g"标志,你可以使用exec   方法多次在同一个字符串中查找连续匹配。   执行此操作时,搜索从指定的str的子字符串开始   正则表达式的lastIndex属性(test()也将提前   lastIndex属性)。

将此应用于您的案例:

var text = "first second1 third\nfirst second2 third\nfirst second3 third";
var middles = [], md, regex = /first (.*?) third/g;

while( md = regex.exec(text) ) { middles.push(md[1]); }

middles // ["second1", "second2", "second3"]