Reputation: 13
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.
Upvotes: 0
Views: 48
Reputation: 32076
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>']
Upvotes: 2