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!