From a837269889f3e6841ccb8b6cec9016dcfa6bfa77 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Tue, 25 Apr 2023 16:52:43 +0300 Subject: [PATCH 01/35] Update article.md --- .../01-regexp-introduction/article.md | 194 +++++++++--------- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index ade62cdf2..28d14a01b 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -1,177 +1,177 @@ -# Patterns and flags +# Вступ: шаблони та прапори -Regular expressions are patterns that provide a powerful way to search and replace in text. +Регулярні вирази – потужний засіб пошуку та заміни у рядку. -In JavaScript, they are available via the [RegExp](mdn:js/RegExp) object, as well as being integrated in methods of strings. +У JavaScript регулярні вирази реалізовані окремим об'єктом [RegExp](mdn:js/RegExp) та інтегровані у методи рядків. -## Regular Expressions +## Регулярні вирази -A regular expression (also "regexp", or just "reg") consists of a *pattern* and optional *flags*. +Регулярний вираз (воно ж "регексп", "регулярка" або просто "рег"), складається з *шаблону* (також кажуть "патерн") і необов'язкових *прапорів*. -There are two syntaxes that can be used to create a regular expression object. +Існує два синтаксиси для створення регулярного виразу. -The "long" syntax: +"Довгий" синтаксис: ```js -regexp = new RegExp("pattern", "flags"); +regexp = new RegExp ("шаблон", "прапори"); ``` -And the "short" one, using slashes `"/"`: +...І короткий синтаксис, що використовує слеши `//``: ```js -regexp = /pattern/; // no flags -regexp = /pattern/gmi; // with flags g,m and i (to be covered soon) +regexp = /шаблон/; // без прапорів +regexp = /шаблон/gmi; // з прапорами gmi (будуть описані далі) ``` -Slashes `pattern:/.../` tell JavaScript that we are creating a regular expression. They play the same role as quotes for strings. +Слеши `pattern:/.../` говорять JavaScript про те, що це регулярний вираз. Вони відіграють таку саму роль, як і лапки для позначення рядків. -In both cases `regexp` becomes an instance of the built-in `RegExp` class. +Регулярний вираз `regexp` в обох випадках є об'єктом вбудованого класу `RegExp`. -The main difference between these two syntaxes is that pattern using slashes `/.../` does not allow for expressions to be inserted (like string template literals with `${...}`). They are fully static. +Основна різниця між цими двома способами створення полягає в тому, що слеши `pattern:/.../` не допускають жодних вставок змінних (на зразок можливих у рядках через `${...}`). Вони цілком статичні. -Slashes are used when we know the regular expression at the code writing time -- and that's the most common situation. While `new RegExp` is more often used when we need to create a regexp "on the fly" from a dynamically generated string. For instance: +Слеши використовуються, коли ми на момент написання коду точно знаємо, яким буде регулярний вираз - і це більшість ситуацій. А `new RegExp` - коли ми хочемо створити регулярний вираз "на льоту" з динамічно згенерованого рядка, наприклад: ```js -let tag = prompt("What tag do you want to find?", "h2"); +let tag = prompt("Який тег ви хочете знайти?", "h2"); -let regexp = new RegExp(`<${tag}>`); // same as /

/ if answered "h2" in the prompt above +let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при відповіді "h2" на prompt вище ``` -## Flags +## Прапори -Regular expressions may have flags that affect the search. +Регулярні вирази можуть мати прапори, які впливають на пошук. -There are only 6 of them in JavaScript: +У JavaScript їх всього шість: `pattern:i` -: With this flag the search is case-insensitive: no difference between `A` and `a` (see the example below). +: З цим прапором пошук не залежить від регістру: немає різниці між `A` та `a` (див. приклад нижче). `pattern:g` -: With this flag the search looks for all matches, without it -- only the first match is returned. +: З цим прапором пошук шукає всі збіги, без нього - лише перше `pattern:m` -: Multiline mode (covered in the chapter ). +: Багаторядковий режим (розглядається в розділі ). `pattern:s` -: Enables "dotall" mode, that allows a dot `pattern:.` to match newline character `\n` (covered in the chapter ). +: Включає режим "dotall", при якому точка `pattern:.` може відповідати символу перекладу рядка `\n` (розглядається у розділі ). `pattern:u` -: Enables full Unicode support. The flag enables correct processing of surrogate pairs. More about that in the chapter . +: Включає повну підтримку Юнікоду. Прапор дозволяє коректну обробку сурогатних пар (докладніше про це у розділі ). `pattern:y` -: "Sticky" mode: searching at the exact position in the text (covered in the chapter ) +: Режим пошуку на конкретній позиції в тексті (описаний у розділі ) -```smart header="Colors" -From here on the color scheme is: +```smart header="Кольорові позначення" +Тут і далі в тексті використовується наступна колірна схема: -- regexp -- `pattern:red` -- string (where we search) -- `subject:blue` -- result -- `match:green` +- регулярний вираз - `pattern: червоний` +- рядок (там, де відбувається пошук) - `subject:синій` +- результат -- `match: зелений` ``` -## Searching: str.match +## Пошук: str.match -As mentioned previously, regular expressions are integrated with string methods. +Як уже говорилося, використання регулярних виразів інтегровано у методи рядків. -The method `str.match(regexp)` finds all matches of `regexp` in the string `str`. +Метод `str.match(regexp)` для рядка `str` повертає збіги з регулярним виразом `regexp`. -It has 3 working modes: +У нього є три режими роботи: -1. If the regular expression has flag `pattern:g`, it returns an array of all matches: - ```js run - let str = "We will, we will rock you"; +1. Якщо у регулярного виразу є прапор pattern: g, то він повертає масив всіх збігів: + ```js run + let str = "За Вас правда, за вас слава і воля святая!"; - alert( str.match(/we/gi) ); // We,we (an array of 2 substrings that match) - ``` - Please note that both `match:We` and `match:we` are found, because flag `pattern:i` makes the regular expression case-insensitive. + alert(str.match(/вас/gi)); // Вас, вас (масив із 2х підрядків-збігів) + ``` + Зверніть увагу: знайдені і `match:Вас` та `match:Вас`, завдяки прапору `pattern:i`, який робить регулярний вираз реєстронезалежним. -2. If there's no such flag it returns only the first match in the form of an array, with the full match at index `0` and some additional details in properties: - ```js run - let str = "We will, we will rock you"; +2. Якщо такого прапора немає, то повертається лише перший збіг у вигляді масиву, в якому за індексом `0` знаходиться збіг, і є властивості з додатковою інформацією про нього: + ```js run + let str = "За Вас правда, за вас слава і воля святая!"; - let result = str.match(/we/i); // without flag g + let result = str.match(/вас/i); // без прапора g - alert( result[0] ); // We (1st match) - alert( result.length ); // 1 + alert(result[0]); // Вас (перший збіг) + alert(result.length); // 1 - // Details: - alert( result.index ); // 0 (position of the match) - alert( result.input ); // We will, we will rock you (source string) - ``` - The array may have other indexes, besides `0` if a part of the regular expression is enclosed in parentheses. We'll cover that in the chapter . + // Додаткова інформація: + alert(result.index); // 0 (позиція збігу) + alert(result.input); // За Вас правда, за вас слава і воля святая! (вихідний рядок) + ``` + У цьому масиві можуть бути інші індекси, крім `0`, якщо частина регулярного вираження виділена в дужки. Ми розберемо це у розділі . -3. And, finally, if there are no matches, `null` is returned (doesn't matter if there's flag `pattern:g` or not). +3. І, нарешті, якщо збігів немає, то, незалежно від наявності прапора `pattern: g`, повертається `null`. - This a very important nuance. If there are no matches, we don't receive an empty array, but instead receive `null`. Forgetting about that may lead to errors, e.g.: + Це дуже важливий аспект. За відсутності збігів повертається не порожній масив, а саме null. Якщо про це забути, можна легко припуститися помилки, наприклад: - ```js run - let matches = "JavaScript".match(/HTML/); // = null + ```js run + let matches = "JavaScript". match(/HTML/); // = null - if (!matches.length) { // Error: Cannot read property 'length' of null - alert("Error in the line above"); - } - ``` + if (!matches.length) { // Помилка: у null немає властивості length + alert("Помилка у рядку вище"); + } + ``` - If we'd like the result to always be an array, we can write it this way: + Якщо хочеться, щоб результатом завжди був масив, можна написати так: - ```js run - let matches = "JavaScript".match(/HTML/)*!* || []*/!*; + ```js run + let matches = "JavaScript".match(/HTML/)*!* || []*/!*; - if (!matches.length) { - alert("No matches"); // now it works - } - ``` + if (!matches.length) { + alert("Збігів немає"); // тепер працює + } + ``` -## Replacing: str.replace +## Заміна: str.replace -The method `str.replace(regexp, replacement)` replaces matches found using `regexp` in string `str` with `replacement` (all matches if there's flag `pattern:g`, otherwise, only the first one). +Метод `str.replace(regexp, replacement)` замінює збіги з `regexp` у рядку `str` на `replacement` (всі, якщо є прапор `pattern:g`, інакше тільки перше). -For instance: +Наприклад: ```js run -// no flag g -alert( "We will, we will".replace(/we/i, "I") ); // I will, we will +// без прапора g +alert("We will, we will".replace(/we/i, "I")); // I will, we will -// with flag g -alert( "We will, we will".replace(/we/ig, "I") ); // I will, I will +// з прапором g +alert("We will, we will".replace(/we/ig, "I")); // I will, I will ``` -The second argument is the `replacement` string. We can use special character combinations in it to insert fragments of the match: +В рядке заміни `replacement` ми можемо використовувати спеціальні комбінації символів для вставки фрагментів збігу: -| Symbols | Action in the replacement string | +| Спецсимволи | Дія у рядку заміни | |--------|--------| -|`$&`|inserts the whole match| -|$`|inserts a part of the string before the match| -|`$'`|inserts a part of the string after the match| -|`$n`|if `n` is a 1-2 digit number, then it inserts the contents of n-th parentheses, more about it in the chapter | -|`$`|inserts the contents of the parentheses with the given `name`, more about it in the chapter | -|`$$`|inserts character `$` | +|`$&`|вставляє всі знайдені збіги| +|$`|вставляє частину рядка до збігу| +|`$'`|вставляє частину рядка після збігу| +|`$n`|якщо `n` це 1-2 значне число, вставляє вміст n-ї скобочної групи регулярного виразу, більше у розділі | +|`$`|вставляє вміст скобочної групи з ім'ям `name`, також вивчимо у розділі | +|`$$`|вставляє символ `"$"` | -An example with `pattern:$&`: +Приклад з `pattern:$&`: ```js run -alert( "I love HTML".replace(/HTML/, "$& and JavaScript") ); // I love HTML and JavaScript +alert( "Люблю HTML".replace(/HTML/, "$& і JavaScript") ); // Люблю HTML та JavaScript ``` -## Testing: regexp.test +## Перевірка: regexp.test -The method `regexp.test(str)` looks for at least one match, if found, returns `true`, otherwise `false`. +Метод `regexp.test(str)` перевіряє, чи є хоч один збіг, якщо так, то повертає `true`, інакше `false`. ```js run -let str = "I love JavaScript"; -let regexp = /LOVE/i; +let str = "Я люблю JavaScript"; +let regexp = /люблю/i; -alert( regexp.test(str) ); // true +alert(regexp.test(str)); // true ``` -Later in this chapter we'll study more regular expressions, walk through more examples, and also meet other methods. +Далі в цьому розділі ми вивчатимемо регулярні вирази, побачимо ще багато прикладів їх використання, а також познайомимося з іншими методами. -Full information about the methods is given in the article . +Повна інформація про різні методи наведена в розділі . -## Summary +## Разом -- A regular expression consists of a pattern and optional flags: `pattern:g`, `pattern:i`, `pattern:m`, `pattern:u`, `pattern:s`, `pattern:y`. -- Without flags and special symbols (that we'll study later), the search by a regexp is the same as a substring search. -- The method `str.match(regexp)` looks for matches: all of them if there's `pattern:g` flag, otherwise, only the first one. -- The method `str.replace(regexp, replacement)` replaces matches found using `regexp` with `replacement`: all of them if there's `pattern:g` flag, otherwise only the first one. -- The method `regexp.test(str)` returns `true` if there's at least one match, otherwise, it returns `false`. +- Регулярний вираз складається з шаблону і необов'язкових прапорів: `pattern: g`, `pattern: i`, `pattern: m`, `pattern: u`, `pattern: s`, `pattern: y`. +- Без прапорів та спеціальних символів, які ми вивчимо пізніше, пошук за регулярним виразом аналогічний пошуку підрядка. +- Метод `str.match(regexp)` шукає збіги: всі, якщо є прапор `pattern: g`, інакше тільки перше. +- Метод `str.replace(regexp, replacement)` замінює збіги з `regexp` на `replacement`: всі, якщо у регулярного виразу є прапор `pattern: g`, інакше тільки перше. +- Метод `regexp.test(str)` повертає `true`, якщо є хоч один збіг, інакше `false`. From 1eeb730985c1a5fcc94c7edb02e76f2fc8fe8508 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Tue, 25 Apr 2023 16:55:26 +0300 Subject: [PATCH 02/35] Update article.md --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 28d14a01b..38afff429 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -98,7 +98,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від alert(result.index); // 0 (позиція збігу) alert(result.input); // За Вас правда, за вас слава і воля святая! (вихідний рядок) ``` - У цьому масиві можуть бути інші індекси, крім `0`, якщо частина регулярного вираження виділена в дужки. Ми розберемо це у розділі . + У цьому масиві можуть бути інші індекси, крім `0`, якщо частина регулярного виразу виділена в дужки. Ми розберемо це у розділі . 3. І, нарешті, якщо збігів немає, то, незалежно від наявності прапора `pattern: g`, повертається `null`. From dbce43ecd33505c77fb869af5435aad07eb13cf7 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Tue, 25 Apr 2023 17:29:13 +0300 Subject: [PATCH 03/35] Update article.md --- 9-regular-expressions/01-regexp-introduction/article.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 38afff429..538507921 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -6,7 +6,7 @@ ## Регулярні вирази -Регулярний вираз (воно ж "регексп", "регулярка" або просто "рег"), складається з *шаблону* (також кажуть "патерн") і необов'язкових *прапорів*. +Регулярний вираз (він же "регексп", "регулярка" або просто "рег"), складається з *шаблону* (також кажуть "патерн") і необов'язкових *прапорів*. Існує два синтаксиси для створення регулярного виразу. @@ -47,7 +47,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від : З цим прапором пошук не залежить від регістру: немає різниці між `A` та `a` (див. приклад нижче). `pattern:g` -: З цим прапором пошук шукає всі збіги, без нього - лише перше +: З цим прапором пошук шукає всі збіги, без нього - лише перше. `pattern:m` : Багаторядковий режим (розглядається в розділі ). From b4d514900f760c6d8eb4c683b265e64e2f068396 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:32:53 +0300 Subject: [PATCH 04/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 538507921..f34e6123e 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -20,7 +20,7 @@ regexp = new RegExp ("шаблон", "прапори"); ```js regexp = /шаблон/; // без прапорів -regexp = /шаблон/gmi; // з прапорами gmi (будуть описані далі) +regexp = /шаблон/gmi; // з прапорами g,m та i (будуть описані далі) ``` Слеши `pattern:/.../` говорять JavaScript про те, що це регулярний вираз. Вони відіграють таку саму роль, як і лапки для позначення рядків. From f089bf608f7525b379ce8d0dd2375a31cf1ca7a9 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:34:02 +0300 Subject: [PATCH 05/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index f34e6123e..529579b6b 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -34,7 +34,7 @@ regexp = /шаблон/gmi; // з прапорами g,m та i (будуть о ```js let tag = prompt("Який тег ви хочете знайти?", "h2"); -let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при відповіді "h2" на prompt вище +let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при відповіді "h2" на запит вище ``` ## Прапори From ad492401cdfb6dd00d76ab2d1771b2d49eff16aa Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:34:48 +0300 Subject: [PATCH 06/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 529579b6b..dd8c2d7c4 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -64,7 +64,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від ```smart header="Кольорові позначення" Тут і далі в тексті використовується наступна колірна схема: -- регулярний вираз - `pattern: червоний` +- регулярний вираз - `pattern:червоний` - рядок (там, де відбувається пошук) - `subject:синій` - результат -- `match: зелений` ``` From bec6c0a9203086e0e2f7c0df5a4f733314cbf6f2 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:34:56 +0300 Subject: [PATCH 07/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index dd8c2d7c4..97f01c56a 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -66,7 +66,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від - регулярний вираз - `pattern:червоний` - рядок (там, де відбувається пошук) - `subject:синій` -- результат -- `match: зелений` +- результат -- `match:зелений` ``` ## Пошук: str.match From 3f3a2dfced6eebf271bd6958dee057f32bb320eb Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:35:12 +0300 Subject: [PATCH 08/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 97f01c56a..660a2bc8b 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -136,7 +136,7 @@ alert("We will, we will".replace(/we/i, "I")); // I will, we will alert("We will, we will".replace(/we/ig, "I")); // I will, I will ``` -В рядке заміни `replacement` ми можемо використовувати спеціальні комбінації символів для вставки фрагментів збігу: +У рядку заміни `replacement` ми можемо використовувати спеціальні комбінації символів для вставки фрагментів збігу: | Спецсимволи | Дія у рядку заміни | |--------|--------| From 133d0089936faeaf6badc1c35c9a12512c8aa8e9 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:35:28 +0300 Subject: [PATCH 09/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 660a2bc8b..c1fa7a604 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -150,7 +150,7 @@ alert("We will, we will".replace(/we/ig, "I")); // I will, I will Приклад з `pattern:$&`: ```js run -alert( "Люблю HTML".replace(/HTML/, "$& і JavaScript") ); // Люблю HTML та JavaScript +alert( "Люблю HTML".replace(/HTML/, "$& і JavaScript") ); // Люблю HTML і JavaScript ``` ## Перевірка: regexp.test From 0024aa24a9d1847273f0e5296c97d0ba36195c73 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:35:37 +0300 Subject: [PATCH 10/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index c1fa7a604..c3487d4a6 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -161,7 +161,7 @@ alert( "Люблю HTML".replace(/HTML/, "$& і JavaScript") ); // Люблю HT let str = "Я люблю JavaScript"; let regexp = /люблю/i; -alert(regexp.test(str)); // true +alert( regexp.test(str) ); // true ``` Далі в цьому розділі ми вивчатимемо регулярні вирази, побачимо ще багато прикладів їх використання, а також познайомимося з іншими методами. From dd264ab9aeb63a2d288dbe692eba68b358f41caf Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:36:12 +0300 Subject: [PATCH 11/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index c3487d4a6..10287ac03 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -168,7 +168,7 @@ alert( regexp.test(str) ); // true Повна інформація про різні методи наведена в розділі . -## Разом +## Підсумки - Регулярний вираз складається з шаблону і необов'язкових прапорів: `pattern: g`, `pattern: i`, `pattern: m`, `pattern: u`, `pattern: s`, `pattern: y`. - Без прапорів та спеціальних символів, які ми вивчимо пізніше, пошук за регулярним виразом аналогічний пошуку підрядка. From e5ebe2b1a11e1721a6fa890c5679e970cbfaf9ee Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:36:29 +0300 Subject: [PATCH 12/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 10287ac03..b86c95136 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -172,6 +172,6 @@ alert( regexp.test(str) ); // true - Регулярний вираз складається з шаблону і необов'язкових прапорів: `pattern: g`, `pattern: i`, `pattern: m`, `pattern: u`, `pattern: s`, `pattern: y`. - Без прапорів та спеціальних символів, які ми вивчимо пізніше, пошук за регулярним виразом аналогічний пошуку підрядка. -- Метод `str.match(regexp)` шукає збіги: всі, якщо є прапор `pattern: g`, інакше тільки перше. +- Метод `str.match(regexp)` шукає збіги: всі, якщо є прапор `pattern:g`, інакше тільки перший. - Метод `str.replace(regexp, replacement)` замінює збіги з `regexp` на `replacement`: всі, якщо у регулярного виразу є прапор `pattern: g`, інакше тільки перше. - Метод `regexp.test(str)` повертає `true`, якщо є хоч один збіг, інакше `false`. From 27dcf8ee251fd623d9973a13bbdfd802c22d6c5c Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Thu, 27 Apr 2023 01:38:47 +0300 Subject: [PATCH 13/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Alex Halkin --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index b86c95136..d780b3392 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -173,5 +173,5 @@ alert( regexp.test(str) ); // true - Регулярний вираз складається з шаблону і необов'язкових прапорів: `pattern: g`, `pattern: i`, `pattern: m`, `pattern: u`, `pattern: s`, `pattern: y`. - Без прапорів та спеціальних символів, які ми вивчимо пізніше, пошук за регулярним виразом аналогічний пошуку підрядка. - Метод `str.match(regexp)` шукає збіги: всі, якщо є прапор `pattern:g`, інакше тільки перший. -- Метод `str.replace(regexp, replacement)` замінює збіги з `regexp` на `replacement`: всі, якщо у регулярного виразу є прапор `pattern: g`, інакше тільки перше. +- Метод `str.replace(regexp, replacement)` замінює збіги з `regexp` на `replacement`: всі, якщо у регулярного виразу є прапор `pattern:g`, інакше тільки перший. - Метод `regexp.test(str)` повертає `true`, якщо є хоч один збіг, інакше `false`. From 824b4ac9d684c88e334f0cb51f1f92ad72dde344 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:23:04 +0300 Subject: [PATCH 14/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index d780b3392..a2a3772b2 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -1,6 +1,6 @@ # Вступ: шаблони та прапори -Регулярні вирази – потужний засіб пошуку та заміни у рядку. +Регулярні вирази – потужний засіб пошуку та заміни тексту в рядках. У JavaScript регулярні вирази реалізовані окремим об'єктом [RegExp](mdn:js/RegExp) та інтегровані у методи рядків. From cf77918e3c070ae087dc10b17a09aa51b5fcce7a Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:23:15 +0300 Subject: [PATCH 15/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index a2a3772b2..afe7d3d88 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -2,7 +2,7 @@ Регулярні вирази – потужний засіб пошуку та заміни тексту в рядках. -У JavaScript регулярні вирази реалізовані окремим об'єктом [RegExp](mdn:js/RegExp) та інтегровані у методи рядків. +В JavaScript регулярні вирази реалізовані окремим об’єктом [RegExp](mdn:js/RegExp) та інтегровані у методи рядків. ## Регулярні вирази From 917d3deeb2cb190db9940d9f09b73d0d37b0d769 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:23:27 +0300 Subject: [PATCH 16/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index afe7d3d88..81ec7e2a4 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -6,7 +6,7 @@ ## Регулярні вирази -Регулярний вираз (він же "регексп", "регулярка" або просто "рег"), складається з *шаблону* (також кажуть "патерн") і необов'язкових *прапорів*. +Регулярний вираз (він же "регексп", "регулярка" або просто "рег"), складається з *шаблону* (також кажуть "патерн") і необов’язкових *прапорів*. Існує два синтаксиси для створення регулярного виразу. From 4f8dff7ac009b1b965f2c9eaedb47deb0302b9a8 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:23:34 +0300 Subject: [PATCH 17/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 81ec7e2a4..a17a59e39 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -25,7 +25,7 @@ regexp = /шаблон/gmi; // з прапорами g,m та i (будуть о Слеши `pattern:/.../` говорять JavaScript про те, що це регулярний вираз. Вони відіграють таку саму роль, як і лапки для позначення рядків. -Регулярний вираз `regexp` в обох випадках є об'єктом вбудованого класу `RegExp`. +Регулярний вираз `regexp` в обох випадках є об’єктом вбудованого класу `RegExp`. Основна різниця між цими двома способами створення полягає в тому, що слеши `pattern:/.../` не допускають жодних вставок змінних (на зразок можливих у рядках через `${...}`). Вони цілком статичні. From 7d235ca763b5a7986d62eb78f80de7ba5e62e134 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:23:56 +0300 Subject: [PATCH 18/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index a17a59e39..1d6dfe5c6 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -16,7 +16,7 @@ regexp = new RegExp ("шаблон", "прапори"); ``` -...І короткий синтаксис, що використовує слеши `//``: +Та "короткий" синтаксис, в якому використовуються слеши `"/"`: ```js regexp = /шаблон/; // без прапорів From 0905fdbcbad246e95253ec0d2a8ac0e56ba6395a Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:24:10 +0300 Subject: [PATCH 19/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 1d6dfe5c6..65c4a6565 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -170,7 +170,7 @@ alert( regexp.test(str) ); // true ## Підсумки -- Регулярний вираз складається з шаблону і необов'язкових прапорів: `pattern: g`, `pattern: i`, `pattern: m`, `pattern: u`, `pattern: s`, `pattern: y`. +- Регулярний вираз складається з шаблону і необов’язкових прапорів: `pattern:g`, `pattern:i`, `pattern:m`, `pattern:u`, `pattern:s`, `pattern:y`. - Без прапорів та спеціальних символів, які ми вивчимо пізніше, пошук за регулярним виразом аналогічний пошуку підрядка. - Метод `str.match(regexp)` шукає збіги: всі, якщо є прапор `pattern:g`, інакше тільки перший. - Метод `str.replace(regexp, replacement)` замінює збіги з `regexp` на `replacement`: всі, якщо у регулярного виразу є прапор `pattern:g`, інакше тільки перший. From 411fbbd0c33da0b2504ecfba46ed22204002990b Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:24:24 +0300 Subject: [PATCH 20/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 65c4a6565..d71100a60 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -133,7 +133,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від alert("We will, we will".replace(/we/i, "I")); // I will, we will // з прапором g -alert("We will, we will".replace(/we/ig, "I")); // I will, I will +alert( "Ми будемо, ми будемо".replace(/ми/ig, "Я") ); // Я будемо, Я будемо ``` У рядку заміни `replacement` ми можемо використовувати спеціальні комбінації символів для вставки фрагментів збігу: From f65dcd381da79f02a254072815c86d8cfe106161 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:24:49 +0300 Subject: [PATCH 21/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index d71100a60..13b72aa64 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -130,7 +130,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від ```js run // без прапора g -alert("We will, we will".replace(/we/i, "I")); // I will, we will +alert( "Ми будемо, ми будемо".replace(/ми/i, "Я") ); // Я будемо, я будемо // з прапором g alert( "Ми будемо, ми будемо".replace(/ми/ig, "Я") ); // Я будемо, Я будемо From dea5c6a5cc08a8a209ffd73cd6f82905f0d7f4da Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:25:07 +0300 Subject: [PATCH 22/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 13b72aa64..caeb447d0 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -124,7 +124,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від ## Заміна: str.replace -Метод `str.replace(regexp, replacement)` замінює збіги з `regexp` у рядку `str` на `replacement` (всі, якщо є прапор `pattern:g`, інакше тільки перше). +Метод `str.replace(regexp, replacement)` замінює збіги з `regexp` у рядку `str` на `replacement` (всі збіги, якщо є прапор `pattern:g`, інакше тільки перше). Наприклад: From f45e004c96692a43fdfa2ee1129586dfba7d5012 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:26:05 +0300 Subject: [PATCH 23/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index caeb447d0..737beb38e 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -27,7 +27,7 @@ regexp = /шаблон/gmi; // з прапорами g,m та i (будуть о Регулярний вираз `regexp` в обох випадках є об’єктом вбудованого класу `RegExp`. -Основна різниця між цими двома способами створення полягає в тому, що слеши `pattern:/.../` не допускають жодних вставок змінних (на зразок можливих у рядках через `${...}`). Вони цілком статичні. +Основна різниця між цими двома синтаксами полягає в тому, що слеши `/.../` не допускають жодних вставок змінних (на зразок тих, що прописуються через `${...}`). Вони повністю статичні. Слеши використовуються, коли ми на момент написання коду точно знаємо, яким буде регулярний вираз - і це більшість ситуацій. А `new RegExp` - коли ми хочемо створити регулярний вираз "на льоту" з динамічно згенерованого рядка, наприклад: From a5c1aae238ee8f83062dc6db6bb035cf9f615059 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:26:27 +0300 Subject: [PATCH 24/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 737beb38e..8374db6e3 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -53,7 +53,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від : Багаторядковий режим (розглядається в розділі ). `pattern:s` -: Включає режим "dotall", при якому точка `pattern:.` може відповідати символу перекладу рядка `\n` (розглядається у розділі ). +: Вмикає режим "dotall", при якому крапка `pattern:.` може відповідати символу нового рядка `\n` (розглядається у розділі ). `pattern:u` : Включає повну підтримку Юнікоду. Прапор дозволяє коректну обробку сурогатних пар (докладніше про це у розділі ). From debecfc9728d478bf84e2ad1d7fd0b2e5cbb3bfc Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:26:47 +0300 Subject: [PATCH 25/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 8374db6e3..cca57b80f 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -56,7 +56,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від : Вмикає режим "dotall", при якому крапка `pattern:.` може відповідати символу нового рядка `\n` (розглядається у розділі ). `pattern:u` -: Включає повну підтримку Юнікоду. Прапор дозволяє коректну обробку сурогатних пар (докладніше про це у розділі ). +: Вмикає повну підтримку Юнікоду. Прапор дозволяє коректну обробку сурогатних пар (докладніше про це у розділі ). `pattern:y` : Режим пошуку на конкретній позиції в тексті (описаний у розділі ) From 0628712905a7af67b221348297d954354451c161 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:26:59 +0300 Subject: [PATCH 26/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index cca57b80f..bfc95209b 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -65,7 +65,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від Тут і далі в тексті використовується наступна колірна схема: - регулярний вираз - `pattern:червоний` -- рядок (там, де відбувається пошук) - `subject:синій` +- рядок (там, де відбувається пошук) -- `subject:синій` - результат -- `match:зелений` ``` From 4740e3dfd1abddf0e186369d6cd4ad7c44f020f1 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:27:22 +0300 Subject: [PATCH 27/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index bfc95209b..64692d15f 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -71,7 +71,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від ## Пошук: str.match -Як уже говорилося, використання регулярних виразів інтегровано у методи рядків. +Як вже згадувалося, використання регулярних виразів інтегровано у методи рядків. Метод `str.match(regexp)` для рядка `str` повертає збіги з регулярним виразом `regexp`. From 07b87262da03b0c4fff6209c2c18cc5ece5b8603 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:27:36 +0300 Subject: [PATCH 28/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 64692d15f..a8c5cd8d6 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -77,7 +77,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від У нього є три режими роботи: -1. Якщо у регулярного виразу є прапор pattern: g, то він повертає масив всіх збігів: +1. Якщо в регулярного виразу є прапор `pattern:g`, то він повертає масив всіх збігів: ```js run let str = "За Вас правда, за вас слава і воля святая!"; From ce1bec8c5eaf961d512f5adf622980e0ab307ff9 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:28:26 +0300 Subject: [PATCH 29/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index a8c5cd8d6..8a1a8089f 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -83,7 +83,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від alert(str.match(/вас/gi)); // Вас, вас (масив із 2х підрядків-збігів) ``` - Зверніть увагу: знайдені і `match:Вас` та `match:Вас`, завдяки прапору `pattern:i`, який робить регулярний вираз реєстронезалежним. + Зверніть увагу: знайдено як `match:Вас` так і `match:вас`, завдяки прапору `pattern:i`, який робить регулярний вираз реєстронезалежним. 2. Якщо такого прапора немає, то повертається лише перший збіг у вигляді масиву, в якому за індексом `0` знаходиться збіг, і є властивості з додатковою інформацією про нього: ```js run From b1152dc6309456d6896a1528b95dca378a37e497 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:32:01 +0300 Subject: [PATCH 30/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 8a1a8089f..1b1399b24 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -98,7 +98,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від alert(result.index); // 0 (позиція збігу) alert(result.input); // За Вас правда, за вас слава і воля святая! (вихідний рядок) ``` - У цьому масиві можуть бути інші індекси, крім `0`, якщо частина регулярного виразу виділена в дужки. Ми розберемо це у розділі . + У цьому масиві можуть бути інші індекси, крім `0`, якщо частина регулярного виразу виділена в дужки. Ми розберемо це у розділі . 3. І, нарешті, якщо збігів немає, то, незалежно від наявності прапора `pattern: g`, повертається `null`. From b005897dcecb4a9321fda71a4d9241c197f79a90 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:32:11 +0300 Subject: [PATCH 31/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 1b1399b24..a68e6a665 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -100,7 +100,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від ``` У цьому масиві можуть бути інші індекси, крім `0`, якщо частина регулярного виразу виділена в дужки. Ми розберемо це у розділі . -3. І, нарешті, якщо збігів немає, то, незалежно від наявності прапора `pattern: g`, повертається `null`. +3. І, нарешті, якщо збігів немає, то, незалежно від наявності прапора `pattern:g`, повертається `null`. Це дуже важливий аспект. За відсутності збігів повертається не порожній масив, а саме null. Якщо про це забути, можна легко припуститися помилки, наприклад: From 6d196a44fbc07bea08cdef9df3c86dcd90e3e5a7 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:32:29 +0300 Subject: [PATCH 32/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index a68e6a665..8c201cd56 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -112,7 +112,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від } ``` - Якщо хочеться, щоб результатом завжди був масив, можна написати так: + Якщо хочеться, щоб результатом завжди був масив, можна написати так: ```js run let matches = "JavaScript".match(/HTML/)*!* || []*/!*; From edb1fad63efa74e1be2a6a3a7aec7741947c437a Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:34:34 +0300 Subject: [PATCH 33/35] Update article.md --- 9-regular-expressions/01-regexp-introduction/article.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 8c201cd56..32441e81c 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -80,7 +80,6 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від 1. Якщо в регулярного виразу є прапор `pattern:g`, то він повертає масив всіх збігів: ```js run let str = "За Вас правда, за вас слава і воля святая!"; - alert(str.match(/вас/gi)); // Вас, вас (масив із 2х підрядків-збігів) ``` Зверніть увагу: знайдено як `match:Вас` так і `match:вас`, завдяки прапору `pattern:i`, який робить регулярний вираз реєстронезалежним. @@ -116,7 +115,6 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від ```js run let matches = "JavaScript".match(/HTML/)*!* || []*/!*; - if (!matches.length) { alert("Збігів немає"); // тепер працює } From 86d3511a28f9c085d57930320959bdfc82e227b7 Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:34:59 +0300 Subject: [PATCH 34/35] Update 9-regular-expressions/01-regexp-introduction/article.md Co-authored-by: Taras --- 9-regular-expressions/01-regexp-introduction/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index 32441e81c..b66785669 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -101,7 +101,7 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від 3. І, нарешті, якщо збігів немає, то, незалежно від наявності прапора `pattern:g`, повертається `null`. - Це дуже важливий аспект. За відсутності збігів повертається не порожній масив, а саме null. Якщо про це забути, можна легко припуститися помилки, наприклад: + Це дуже важливий аспект. За відсутності збігів повертається не порожній масив, а саме `null`. Якщо про це забути, можна легко припуститися помилки, наприклад: ```js run let matches = "JavaScript". match(/HTML/); // = null From 1742edcca23a58802d4d6471174cdd9acd6212ef Mon Sep 17 00:00:00 2001 From: Daria Bromot <80320446+bromotdi@users.noreply.github.com> Date: Sat, 29 Apr 2023 21:37:51 +0300 Subject: [PATCH 35/35] Update article.md --- 9-regular-expressions/01-regexp-introduction/article.md | 1 - 1 file changed, 1 deletion(-) diff --git a/9-regular-expressions/01-regexp-introduction/article.md b/9-regular-expressions/01-regexp-introduction/article.md index b66785669..79a1317a5 100644 --- a/9-regular-expressions/01-regexp-introduction/article.md +++ b/9-regular-expressions/01-regexp-introduction/article.md @@ -105,7 +105,6 @@ let regexp = new RegExp(`<${tag}>`); // те саме, що /

/ при від ```js run let matches = "JavaScript". match(/HTML/); // = null - if (!matches.length) { // Помилка: у null немає властивості length alert("Помилка у рядку вище"); }