preg_match_all JS equivalent? preg_match_all JS equivalent? php php

preg_match_all JS equivalent?


You can use match with the global modifier:

>>> '1 2 3 4'.match(/\d/g);["1", "2", "3", "4"]


John Resig has written about a great technique on his blog called 'Search and dont replace'

It works using javascript's replace function, which takes a callback function, and returns nothing to leave the original content unaltered.

This can be a neater than using a global match and iterating over an array of results, especially if you're capturing several groups.


A better equivalent of preg_match_all from PHP in JS would be to use the exec() function. This will allow you to capture groups as well, with match() you can not do that.

For example you want to capture all times and the number in brackets from the variable myString:

var myString = "10:30 am (15 left)11:00 am (15 left)11:30 am";var pattern = /(\d{1,2}:\d{1,2}\s?[ap]m)\s\((\d+)/gi;var match;while (match = pattern.exec(myString)){  console.log('Match: "' + match[0] + '" first group: -> "' + match[1] + '" second group -> ' + match[2]);}

The output will be:

Match: "10:30 am (15" first group: -> "10:30 am" second group -> 15Match: "11:00 am (15" first group: -> "11:00 am" second group -> 15