From 218934fa2ed1c702a6d3923d2aa2cc6b43c48684 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:43:23 -0500 Subject: initial commit --- .../global_objects/string/match/index.html | 194 +++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 files/uk/web/javascript/reference/global_objects/string/match/index.html (limited to 'files/uk/web/javascript/reference/global_objects/string/match') diff --git a/files/uk/web/javascript/reference/global_objects/string/match/index.html b/files/uk/web/javascript/reference/global_objects/string/match/index.html new file mode 100644 index 0000000000..dfc6bf5f6b --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/string/match/index.html @@ -0,0 +1,194 @@ +--- +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

+ + + +

Див. також

+ + -- cgit v1.2.3-54-g00ecf