I want to create an array of matches for my regex expression in javascript.
It should look like: ['<:S_egirl:1023714296590499882>', '<a:eee:1023672889490284606>']
However, my code currently only makes an array with 1 item which includes all the matches.
The expression is: /<:. :(\d )>/gm
And my code is const parsed_emotes = [].concat(emotes.match(/<:. :(\d )>/gm)); console.log(parsed_emotes);
I've been stuck on this for hours, any help is appreciated.
CodePudding user response:
Make your .
non-greedy with ?
. Compare the output of these two matches:
'<:hello:1234> <:hello:1234>'.match(/<:. :(\d )>/gm)
// Produces ['<:hello:1234> <:hello:1234>']
Vs a non-greedy match:
'<:hello:1234> <:hello:1234>'.match(/<:. ?:(\d )>/gm)
// Produces ['<:hello:1234>', '<:hello:1234>']