References

Beginner-friendly references for web development, with live, editable examples.

The JavaScript string.match() method

Method JavaScript All modern browsers Updated
Quick answer

The match() method searches a string with a regular expression and returns the matches as an array, or null if there are none. With the global flag /g it returns all matched strings; without it, it returns the first match plus capture groups. Check for null before using the result.

Overview

match() runs a regular expression against a string and tells you what it found. Pass it a regex and it returns an array of matches, or null when there's nothing, which is the result you must guard against before indexing into it.

Its behavior depends on the global flag. With /g, match() returns a flat array of all matched substrings: "a1b2c3".match(/\d/g) gives ["1", "2", "3"]. Without /g, it returns details for just the first match (the full match at index 0, then any capture groups, plus index and input properties), which is what you want when you need the captured pieces.

When you want all matches and their capture groups together, the newer matchAll() is the right tool: it returns an iterator of full match objects you can loop with for...of. For a quick yes/no "does it match", regex.test(str) is simpler than match(), and for find-and-replace use replace().

Syntax

str.match(regexp)

"a1b2c3".match(/\d/g)        // ["1", "2", "3"]  (global)
"2026-06-23".match(/(\d+)-(\d+)/) // ["2026-06", "2026", "06", ...]
"abc".match(/x/)             // null

Parameters

The string.match() method accepts the following parameters.

Parameter Description
regexp A regular expression to match against. A non-regex argument is converted to one.

Example

Live example
<pre id="out" style="font:15px ui-monospace,monospace"></pre>
<script>
  const text = 'Call 555-1234 or 555-5678';

  const numbers = text.match(/\d{3}-\d{4}/g);

  document.getElementById('out').textContent =
    numbers ? numbers.join('\n') : 'no matches';
  // 555-1234 / 555-5678
</script>

Best practices

  • Always check for null; match() returns it when there's no match.
  • Use the /g flag to get every matched string; omit it to get the first match with capture groups.
  • Use matchAll() when you need all matches and their groups together.
  • For a simple "does it match?" check, regex.test(str) is clearer.

Frequently asked questions

What does string match() return?
An array of matches, or null if there are none. With the /g flag it returns all matched strings; without it, the first match plus capture groups.
How do I get all matches of a regex?
Add the global flag: str.match(/pattern/g). For matches with capture groups, use str.matchAll(/pattern/g).
What is the difference between match() and matchAll()?
match() with /g returns just the matched strings; matchAll() returns an iterator of full match objects (with groups) for every match.
How do I just check if a string matches a pattern?
Use regex.test(str), which returns a boolean, simpler than match() when you only need yes/no.