The matchAll()
method returns an iterator of results after matching a string against a regular expression.
Example
// string definition
const sentence = "JavaScript1JavaScript2";
// a pattern having 'JavaScript' followed by a digit
const regex = /JavaScript\d/g;
// finding matches in the string for the given regular expression
let results = sentence.matchAll(regex);
// looping through the iterator
for (result of results) {
console.log(result);
}
// Output:
// ["JavaScript1", index: 0, input: "JavaScript1JavaScript2", groups: undefined]
// ["JavaScript2", index: 11, input: "JavaScript1JavaScript2", groups: undefined]
matchAll() Syntax
The syntax of the matchAll()
method is:
str.matchAll(regexp)
Here, str
is a string.
matchAll() Parameters
The matchAll()
method takes a single parameter:
- regex - A regular expression object (Argument is implicitly converted to
regex
if it is a non-regex
object)
Note:
- If
regex
object does not have the/g
flag, aTypeError
will be thrown. - The
g
flag is for global search which means this flag indicates that we test the regular expression against all the matches in the string.
matchAll() Return Value
- Returns an iterator containing the matches including the capturing groups.
Note: The returned iterator's each item will have the following additional properties:
- groups- An object of named capturing groups having keys as the names and values as the captured matches.
- index- The index of search where the result was found.
- input - A copy of the search string.
Example 1: Using matchAll() Method
// string definition
const sentence= "I am learning JavaScript not Java.";
// pattern having 'Java' with any number of characters from a to z
const regex = /Java[a-z]*/gi;
// finding matches in the string for the given regular expression
let result = sentence.matchAll(regex);
// converting result into an array
console.log(Array.from(result));
Output
[ 'JavaScript', index: 14, input: 'I am learning JavaScript not Java.', groups: undefined ] [ 'Java', index: 29, input: 'I am learning JavaScript not Java.', groups: undefined ]
In the above example, we have defined a regular expression regex with the /g
flag. We have then invoked the matchAll()
method in sentence.
sentence.matchAll(regex)
matches the sentence string against the pattern that has- 'Java'
along with any number of characters from a to z.
The method found two matches- 'JavaScript'
and 'Java'
for the given regex.
Note: The resulting output from the matchAll()
method is in object so we have used Array.from(result)
to convert it to array.
Example 2: Case Sensitive regex in matchAll()
The regular expression(regex) is case sensitive. We can use the i
flag to make it case insensitive in the matchAll()
method. For example:
// string definition
const bio = "His name is Albert and albert likes to code.";
// pattern having 'albert' or 'Albert'
const regex = /albert/gi;
// finding 'albert' or 'Albert' in the string
const result = bio.matchAll(regex);
console.log(Array.from(result));
Output
[ [ 'Albert', index: 13, input: 'His name is Albert and albert likes to code.', groups: undefined ], [ 'albert', index: 24, input: 'His name is Albert and albert likes to code.', groups: undefined ] ]
Here, we have used i
in regex along with g
(/albert/g
) which makes it case insensitive. So the method returns array with two iterators with found matches- 'Albert'
and 'albert'
.
Recommended Reading: JavaScript String match()