ГРУППА КУРСА
|
Методы для работы с регулярными выражениямиДля работы с регулярными выражениями существует встроенный класс объектов RegExp. Когда мы пишем регулярное выражение, мы создаём объект этого класса и можем использовать его методы. Некоторые методы объектов String также работают с регулярками. Поиск подстрокиМетод match() возвращает массив, каждый элемент которого содержит подстроку, найденную регулярным выражением. Он использовался в прошлых темах, поэтому подробно описывать его я не буду. При отсутствии флага g всё равно возвращается массив, содержащий первое совпадение. Массив также имеет два свойства. Свойство index, указывающее позицию первого символа найденной подстроки. Свойство input содержит всю строку, в которой найдено совпадение. При наличии флага g этих свойств нет. Для поиска позиции подстроки используется метод exec объекта RegExp. regexp.exec (строка) Без флага g метод работает также как match. С флагом g он при первом вызове находит первое совпадение, на втором вызове - второе совпадение и так далее. Каждый раз он возращает массив с найденной подстрокой. Массив имеет свойство index c номером первого символа найденного совпадения. Когда совпадения закончились, метод возвращает NULL. Создадим скрипт, который находит в тексте все англайские слова и выводит на экран позиции первых символов этих слов: +
Чтобы метод exec() нашёл очередную подстроку, он должен начинать поиск с символа, следующего за предыдущей подстрокой. Для этого объект RegExp имеет свойство lastIndex. Оно указывает позицию, с которой нужно начинать поиск. Сначала оно равно нулю. Когда найдена подстрока, в свойство записывается номер символа, следующего за подстрокой. Если совпадение не найдено, то оно снова приравнивается к нулю. lastIndex можно самостоятельно указать в скрипте. Если добавить в наш пример такую строку, то первое слово не будет найдено:
Метод test() используют когда нужно узнать, есть ли подстрока в тексте. regexp.test (строка) Он возвращает true при наличии хотя бы одного совпадения. Замена подстрокиМетод строки replace() заменяет подстроку на новую. Вместо заменяемой подстроки можно написать регулярное выражение. Удалим текст, написанный в скобках:
Заменяемую подстроку можно вставить в новую подстроку. Подробно об этом говорилось при рассмотрении метода replace(). Скобки в регулярном выражении делят найденную подстроку на части и позволяют вставлять эти части по отдельности. Первые скобки вставляет код $1. Если есть вторые, то их вставляет код $2. Так можно разделить паттерн на любое количество частей. Поменяем местами названия стран и их столицы:
|