I have this code:
var r = /(?:^s*([^s]*)s*)(?:,s*([^s]*)s*){0,}$/
var s = "   a   ,  b  , c "
var m = s.match(r)
m => ["   a   ,  b  , c ", "a", "c"]
Looks like the whole string has been matched, but where has "b" gone? I would rather expect to get:
[" a , b , c ", "a", "b", "c"]
so that I can do m.shift() with a result like s.split(',') but also with whitespaces removed.
Do I have a mistake in the regexp or do I misunderstand String.prototype.match?
Advertisement
Answer
so finally i went with /(?=S)[^,]+?(?=s*(,|$))/g, which provides exactly what i need: all sentences split by ‘,’ without surrounding spaces.
' a, OMG abc b a b, d o WTF foo '. match( /(?=S)[^,]+?(?=s*(,|$))/g ) => ["a", "OMG abc b a b", "d o WTF foo"]
many thanks!