我正在尝试学习如何分解这个字符串:
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"]
任何想法?
答案 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
属性在正则表达式中观察和修改此索引。