JavaScript Regex Global Match Groups
To do this with a regex, you will need to iterate over it with .exec()
in order to get multiple matched groups. The g
flag with match will only return multiple whole matches, not multiple sub-matches like you wanted. Here's a way to do it with .exec()
.
var input = "'Warehouse','Local Release','Local Release DA'";
var regex = /'(.*?)'/g;
var matches, output = [];
while (matches = regex.exec(input)) {
output.push(matches[1]);
}
// result is in output here
Working demo: http://jsfiddle.net/jfriend00/VSczR/
With certain assumptions about what's in the strings, you could also just use this:
var input = "'Warehouse','Local Release','Local Release DA'";
var output = input.replace(/^'|'$/, "").split("','");
Working demo: http://jsfiddle.net/jfriend00/MFNm3/
Not very generic solution since lookbehind isn't supported in Javascript but for given input this regex should work:
m = input.match(/([^',]+)(?=')/g);
//=> ["Warehouse", "Local Release", "Local Release DA"]
There is an ECMAScript proposal called String.prototype.matchAll()
that would fulfill your needs.