Learn JavaScript

match() - метод для поиска совпадений в строке в JavaScript

match() ищет совпадения строки с шаблоном и возвращает результат поиска.

Главная особенность этого метода в том, что его поведение зависит от того, есть ли у регулярного выражения флаг g.

Синтаксис

str.match(regexp)

Метод вызывается у строки и обычно работает с регулярным выражением.

Результат может быть:

  • массивом
  • null, если совпадений нет

Как работает match()

const text = "Version 2.0";

console.log(text.match(/\d/));

Без флага g метод возвращает информацию о первом совпадении.

match() без флага g

Если у регулярного выражения нет флага g, match() возвращает массив с данными о первом совпадении.

const text = "abc123";
const result = text.match(/\d+/);

console.log(result[0]);   // "123"
console.log(result.index); // 3

В таком результате обычно есть:

  • найденный текст
  • индекс совпадения
  • исходная строка

match() с флагом g

Если у регулярного выражения есть флаг g, match() возвращает массив всех найденных совпадений.

const text = "a1 b2 c3";

console.log(text.match(/\d/g)); // ["1", "2", "3"]

В этом режиме метод уже не возвращает index и другие служебные поля, а отдаёт только найденные значения.

Если совпадений нет

Если совпадений нет, match() возвращает null.

const text = "JavaScript";

console.log(text.match(/\d/)); // null

Это важно учитывать перед обращением к элементам результата.

Когда это полезно

match() удобно использовать, когда:

  • нужно найти первое совпадение и узнать его индекс
  • нужно получить все совпадения по регулярному выражению
  • нужно быстро вытащить части строки по шаблону

Пример:

const text = "Order #12345";
const result = text.match(/\d+/);

console.log(result[0]); // "12345"

search() возвращает только индекс первого совпадения, а match() возвращает само совпадение или массив совпадений.

const text = "abc123";

console.log(text.search(/\d+/)); // 3
console.log(text.match(/\d+/));  // ["123", ...]

Если нужен только индекс, часто достаточно search(). Если нужен найденный текст, удобнее match().

match() и matchAll()

match() с флагом g возвращает просто массив найденных значений.

const text = "a1 b2 c3";

console.log(text.match(/\d/g)); // ["1", "2", "3"]

Если нужно получить все совпадения вместе с группами и индексами, чаще используют matchAll().

Частые ошибки

Забывать про null

const text = "hello";

console.log(text.match(/\d/)); // null

Если совпадения нет, результат будет null, а не пустой массив.

Не учитывать разницу между режимом с g и без g

const text = "a1 b2 c3";

console.log(text.match(/\d/));  // первое совпадение
console.log(text.match(/\d/g)); // все совпадения

Это одно из самых важных различий у match().

Ждать index при использовании g

const text = "a1 b2";
const result = text.match(/\d/g);

console.log(result); // ["1", "2"]

С флагом g метод возвращает только массив найденных строк без index.

Быстрая памятка

  • match() ищет совпадения строки с шаблоном
  • без g возвращает первое совпадение с дополнительной информацией
  • с g возвращает массив всех совпадений
  • если ничего не найдено, метод вернёт null
  • для более подробной работы со всеми совпадениями есть matchAll()

Коротко

match() - это метод строки в JavaScript для поиска совпадений по шаблону. Он удобен тем, что может вернуть либо первое совпадение с подробной информацией, либо все совпадения сразу, если у регулярного выражения есть флаг g.