我需要一个在两个字符串之间的字符串数组但是当我使用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"]
我是否可以尝试每次出现只获得中间字符串?
答案 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"]