Перейти до основного вмісту
Модуль 7 · Урок 2 із 426/32 у курсі~10 min
Модульні уроки (2/4)

Базова заміна та `$1`

У JavaScript String.prototype.replace(regex, replacement) виконує a збіг шаблону та замінює кожен збіг заданим рядком. З g прапор замінює всі збіги; без нього тільки перший. replaceAll форсує глобальну поведінку (і вимагає прапора g в регулярному виразі).

JS
'ciao mondo'.replace(/o/g, '0'); // "cia0 m0nd0"
'Mario Rossi'.replace(/(\w+) (\w+)/, '$2 $1'); // "Rossi Mario"

Посилання в рядку заміни

Усередині рядка заміни це спеціальні:

  • $1, $2, \u2026 -- зворотне посилання на нумеровану групу регулярного виразу.
  • $<name> -- зворотне посилання на іменовану групу.
  • $& -- весь матч.
  • `$`` -- текст до матчу.
  • $' -- текст після матчу.
  • $$ -- єдиний літерал $.
JS
const data = '2024-03-15';
data.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1');
// "15/03/2024"

Переформатуйте дату, змінивши порядок. Регулярний вираз має 3 групи, а в рядок заміни, ви посилаєтеся на них як $1, $2, $3.

Спеціальні посилання в замінах

Окрім $1 та $2, ви можете використовувати $&, щоб вставити весь відповідний текст, $ for all text preceding the match, and$''` для всього наступного тексту. Це дозволяє багатофункціональні заміни навіть без написання коду JS.

Спробуйте

вправи#regex.m7.l2.e1
Спроби: 0Завантаження…

Знайдіть кожну дату у форматі РРРР-ММ-ДД із трьома групами (рік, місяць, день). Таким чином ви можете використовувати заміну для отримання ДД/ММ/РРРР.

Завантаження редактора…
Показати підказку

Замініть \\d+ на \\d{4}, \\d{2}, \\d{2} усередині трьох груп, захоплених за допомогою (...).

Рішення доступне після 3 спроб

Повторна вправа

вправи#regex.m7.l2.e2
Спроби: 0Завантаження…

Знайдіть «перший останній» як дві групи з іменами `nome` і `cognome`, щоб ви могли переписати його як `cognome, nome` за допомогою `$<cognome>, $<nome>`.

Завантаження редактора…
Показати підказку

Використовуйте (?<nome>\\w+) і (?<cognome>\\w+), розділені \\s+.

Рішення доступне після 3 спроб

Додатковий виклик

вправи#regex.m7.l2.e3
Спроби: 0Завантаження…

Create a capture pattern to reverse the order of first and last name from `Lastname, Firstname` format to `Firstname Lastname`.

Завантаження редактора…
Показати підказку

Use two capture groups for last and first name; the replacement will be performed via $2 $1.

Рішення доступне після 3 спроб