JS regex.exec()返回第一个查找

时间:2012-06-22 23:44:38

标签: javascript

我正在尝试学习如何分解这个字符串:

var str = 'red','blue','gree'

我有这个工作代码:

var clean = str.replace(/\'/g, "");
var elements = clean.split(',');

产生数组["red","blue","green"],这是我想要的。我喜欢用regex.exec()方法学习如何做到这一点。

这是我得到的:

var patt = /([^']+)/g;
var elem= patt.exec(str); 

但这会返回数组["red","red"]

任何想法?

1 个答案:

答案 0 :(得分:2)

使用exec,要获得多个匹配项,您需要在循环中运行它...

var str = "'red','blue','gree'"; // making a guess here

var patt = /([^']+)/g;
var match;

       //   v----yes, an assignment
while(match = patt.exec(str)) {
    console.log(match[1]);
}

DEMO: http://jsfiddle.net/D62D4/

全局正则表达式在最后一次匹配结束后存储索引,并从该点开始执行下一个查询。

这种情况一直持续到没有匹配为止,此时索引被设置回0

您可以使用.lastIndex属性在正则表达式中观察和修改此索引。