--- 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 ---
Метод match() шукає та повертає (якщо є) збіги рядка із зазначеним регулярним виразом.
{{EmbedInteractiveExample("pages/js/string-match.html", "shorter")}}
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
str.match(regexp)
regexpnew RegExp(regexp).[""].{{jsxref("Array","Масив")}}, чий вміст залежить від наявності чи відсутності глобального (g) прапора, або {{jsxref("null")}}, якщо жодних збігів не знайдено.
g, метод поверне усі результати, що збігаються з повним регулярним виразом, але не поверне захоплені групи.g не використовується, метод поверне лише перший повний збіг та захоплені групи, які він містить. У цьому випадку повернений елемент матиме додаткові властивості, описані нижче.Як пояснювалось вище, деякі результати містять наступні додаткові властивості:
groupsindexinput Якщо регулярний вираз не позначено прапорцем g, виклик str.match() повертає такий самий результат, що й {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}}.
g встановлено, вам потрібен метод {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}} або {{jsxref("String.prototype.matchAll()")}}.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')}} |
Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію https://github.com/mdn/browser-compat-data.
{{Compat("javascript.builtins.String.match")}}
{{Compat("javascript.builtins.RegExp.named_capture_groups")}}
flags був нестандартним другим аргументом, доступним лише у Firefox: str.match(regexp, flags). Він був прибраний, починаючи з Firefox 49.match() викликано із глобальним регулярним виразом, властивість {{jsxref("RegExp.lastIndex")}} (якщо зазначено) скидається до 0 (bug 501739).