Javascript String match()

The JavaScript String match() method returns the result of matching a string against a regular expression.

The syntax of the match() method is:

str.match(regexp)

Here, str is a string.


match() Parameters

The match() method takes in:

  • regexp - A regular expression object (Argument is implicitly converted to RegExp if it is a non-RegExp object)

Note: If you don't give any parameters, match() returns [""].


Return value from match()

  • Returns an Array containing the matches, one item for each match.
  • Returns null if no match is found.

Example 1: Using match()

const string = "I am learning JavaScript not Java.";
const re = /Java/;

let result = string.match(re);
console.log("Result of matching /Java/ :");
console.log(result);

const re1 = /Java/g;
let result1 = string.match(re1);

console.log("Result of matching /Java/ with g flag:")
console.log(result1);

Output

Result of matching /Java/ :
[
  'Java',
  index: 14,
  input: 'I am learning JavaScript not Java.',
  groups: undefined
]
Result of matching /Java/ with g flag:
[ 'Java', 'Java' ]

Here, we can see that without using the g flag, we get only the first match as a result but with detailed information like index, input, and groups.

Note: If the regular expression does not include the g flag, str.match() will return only the first match similar to RegExp.exec(). The returned item will also 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 2: Matching sections in string

const string = "My name is Albert. YOUR NAME is Soyuj.";

// expression matches case-insensitive "name is"+ any alphabets till period (.)
const re = /name\sis\s[a-zA-Z]+\./gi;

let result = string.match(re);
console.log(result); // [ 'name is Albert.', 'NAME is Soyuj.' ]

// using named capturing groups
const re1 = /name\sis\s(?<name>[a-zA-Z]+)\./i;
let found = string.match(re1);

console.log(found.groups); // {name: "Albert"}

Output

[ 'name is Albert.', 'NAME is Soyuj.' ]
{name: "Albert"}

Here, we have used a regular expression to match a certain portion of the string. We can also capture certain groups in the match using the syntax as shown above.


Recommended Reading: JavaScript String matchAll()