--- title: String.prototype.match() slug: Web/JavaScript/Reference/Global_Objects/String/match tags: - JavaScript - Method - Prototype - String - Довідка - Регулярний вираз - метод translation_of: Web/JavaScript/Reference/Global_Objects/String/match ---
{{JSRef}}

Метод match() шукає та повертає (якщо є) збіги рядка із зазначеним регулярним виразом.

{{EmbedInteractiveExample("pages/js/string-match.html", "shorter")}}

Синтаксис

str.match(regexp)

Параметри

regexp
Об'єкт регулярного виразу.
Якщо передати значення іншого типу, воно буде неявно перетворене на {{jsxref("RegExp")}} за допомогою оператора new RegExp(regexp).
Якщо жодного параметра не вказано, метод поверне {{jsxref("Array","масив")}} з одним елементом — порожнім рядком: [""].

Вертає

{{jsxref("Array","Масив")}}, чий вміст залежить від наявності чи відсутності глобального (g) прапора, або {{jsxref("null")}}, якщо жодних збігів не знайдено.

Додаткові властивості

Як пояснювалось вище, деякі результати містять наступні додаткові властивості:

groups
Масив іменованих захоплених груп або {{jsxref("undefined")}}, якщо іменовані групи не були визначені. Дивіться Групи та діапазони, щоб дізнатись більше.
index
Індекс пошуку, за яким був знайдений результат.
input 
Копія рядка, в якому здійснювався пошук.

Опис

Якщо регулярний вираз не позначено прапорцем g, виклик str.match() повертає такий самий результат, що й {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}}.

Інші методи

Приклади

Використання match()

У прикладі нижче метод match() задіяно, щоб знайти слово «розділ», за ним одну чи кілька цифр, далі десяткова крапка та 0 чи більше числових символів.

Регулярний вираз позначено прапорцем i, що означає відсутність розрізнювання великих та малих літер.

var str = 'Докладніше див. розділ 3.4.5.1';
var re = /див\. (розділ \d+(\.\d)*)/i;
var found = str.match(re);

console.log(found);

// Виводить:
// [
//   0: "див. розділ 3.4.5.1"
//   1: "розділ 3.4.5.1"
//   2: ".1"
//   index: 11
//   input: "Докладніше див. розділ 3.4.5.1"
// ]

// Рядок "див. розділ 3.4.5.1" є повним збігом.
// Рядок "розділ 3.4.5.1" — це підрядок, захоплений підвиразом '(розділ \d+(\.\d)*)'
// Рядок ".1" — це останній підрядок, захоплений підвиразом '(\.\d)'
// Властивість 'index' (11) — це зсув підрядка, що відповідає регулярному виразові
// Властивість 'input' — це повна копія досліджуваного рядка str

Вживання прапорців i та g із методом match()

Приклад нижче засвідчує дію прапорців i (ignore case — регістронезалежний режим) та g (global — пошук усіх збігів, а не тільки першого) при використанні метода match(). Будуть повернені усі літери від A до E та від a до e, кожна як окремий елемент масиву.

var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
var regexp = /[A-E]/gi;
var matches_array = str.match(regexp);

console.log(matches_array);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']

Заувага: Дивіться також метод {{jsxref("String.prototype.matchAll()")}} та Складний пошук за допомогою прапорів.

Використання іменованих груп

У переглядачах, які підтримують іменовані захоплені групи, наступний код захопить "їжак" чи "кіт" у групу на ім'я "тварина":

let paragraph = 'Єхидна, ґава, їжак ще й шиплячі плазуни бігцем форсують Янцзи.';

let capturingRegex = /(?<тварина>їжак|кіт) ще й/;
found = paragraph.match(capturingRegex);
console.log(found.groups); // {тварина: "їжак"}

Використання match() без параметрів

var str = "Я — Дух одвічної стихії";

// вертає ["", index: 0, input: "Я — Дух одвічної стихії"]
str.match();

Параметр відмінного від RegExp типу

Якщо переданий параметр являє собою рядок або число, його буде перетворено на об'єкт {{jsxref("RegExp")}} шляхом неявного виклику new RegExp(obj).

Якщо це додатнє число, його знаком + буде знехтувано, проте для від'ємного числа знак - стане частиною регулярного виразу:

var str1 = "NaN означає «не число». Нескінченність у JavaScript має дві форми: -Infinity та +Infinity.",
    str2 = "Моїй бабці 65 років, а дідусеві — 63.",
    str3 = "Незмінна величина null позначає відсутність очікуваного значення.";

str1.match("число");    // "число" є рядком; вертає ["число"]
str1.match(NaN);        // величина NaN є числом; вертає ["NaN"]
str1.match(Infinity);   // величина Infinity також є числом; вертає ["Infinity"]
str1.match(+Infinity);  // вертає ["Infinity"]
str1.match(-Infinity);  // вертає ["-Infinity"]
str2.match(65);         // вертає ["65"]
str2.match(+65);        // додатнє число; вертає ["65"]
str3.match(null);       // вертає ["null"]

Специфікації

Специфікація
{{SpecName('ESDraft', '#sec-string.prototype.match', 'String.prototype.match')}}

Підтримка веб-переглядачами

Базова підтримка методу match()

{{Compat("javascript.builtins.String.match")}}

Підтримка іменованих груп

{{Compat("javascript.builtins.RegExp.named_capture_groups")}}

Зауваги щодо Firefox

Див. також