Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
27 Июн 2024
2 мин
57

Работа с группами в JavaScript регулярных выражениях

Иногда возникает необходимость не просто проверить строку на соответствие регулярному выражению, но и извлечь определенные части этой строки. В регулярных

Иногда возникает необходимость не просто проверить строку на соответствие регулярному выражению, но и извлечь определенные части этой строки. В регулярных выражениях для этого используются так называемые «группы».

Пример

Рассмотрим пример. Пусть есть строка, которая представляет собой некую информацию о формате:

var myString = "something format_abc";

И хочется извлечь часть этой строки, которая идет после format_. Для этого можно использовать регулярное выражение с группой:

var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);

Здесь (.*?) — это и есть группа, которую мы хотим извлечь. Результат применения этого регулярного выражения будет массив, где нулевой элемент — это вся подстрока, соответствующая регулярному выражению, а элементы с индексами, начиная с 1, — это извлеченные группы.

console.log(arr); // Выводит: [" format_abc", "abc"]

Тут arr[0] — это " format_abc", а arr[1] — это "abc".

Внимание на спецсимволы

Однако, при работе с регулярными выражениями важно помнить о специфике языка. В частности, в JavaScript некоторые символы в строках имеют специальное значение. Например, символ % в строке, передаваемой в console.log, интерпретируется как место для подстановки значения.

Поэтому, если в извлеченной группе окажется символ %, то при выводе в консоль может возникнуть ситуация, когда вместо ожидаемого значения будет выведено undefined.

var myString = "date format_%A";
var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);
console.log(arr[1]); // Выводит: undefined

Чтобы избежать такой ситуации, можно использовать метод String.prototype.replace() для замены специфических символов на их escape-последовательности.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий