Выразительный JavaScript (Хавербеке) - страница 103

>/x*/ Ноль или более вхождений

>/x?/ Ноль или одно вхождение

>/x{2,4}/ От двух до четырёх вхождений

>/(abc)/ Группа

>/a|b|c/ Любой из нескольких шаблонов

>/\d/ Любая цифра

>/\w/ Любой алфавитно-цифровой символ («буква»)

>/\s/ Любой пробельный символ

>/./ Любой символ, кроме переводов строки

>/\b/ Граница слова

>/^/ Начало строки

>/$/ Конец строки


У регулярки есть метод >test, для проверки того, есть ли шаблон в строке. Есть метод >exec, возвращающий массив, содержащий все найденные группы. У массива есть свойство >index, показывающее, где начался поиск.

У строк есть метод >match для поиска шаблонов, и метод >search, возвращающий только начальную позицию вхождения. Метод >replace может заменять вхождения шаблона на другую строку. Кроме этого, вы можете передать в >replace функцию, которая будет строить строчку на замену, основываясь на шаблоне и найденных группах.

У регулярок есть настройки, которые пишут после закрывающего слэша. Опция >i делает регулярку регистронезависимой, а опция >g делает её глобальной, что, кроме прочего, заставляет метод >replace заменять все найденные вхождения, а не только первое.

Конструктор >RegExp можно использовать для создания регулярок из строк.

Регулярки – острый инструмент с неудобной ручкой. Они сильно упрощают одни задачи, и могут стать неуправляемыми при решении других, сложных задач. Часть умения пользоваться регулярками состоит в том, чтобы уметь сопротивляться искушению запихнуть в них задачу, для которой они не предназначены.

Упражнения

Неизбежно при решении задач у вас возникнут непонятные случаи, и вы можете иногда отчаиваться, видя непредсказуемое поведение некоторых регулярок. Иногда помогает изучить поведение регулярки через онлайн-сервис типа debuggex.com, где можно посмотреть её визуализацию и сравнить с желаемым эффектом.

Регулярный гольф

«Гольфом» в коде называют игру, где нужно выразить заданную программу минимальным количеством символов. Регулярный гольф – практическое упражнение по написанию наименьших возможных регулярок для поиска заданного шаблона, и только его.


Для каждой из подстрочек напишите регулярку для проверки их нахождения в строке. Регулярка должна находить только эти указанные подстроки. Не волнуйтесь насчёт границ слов, если это не упомянуто особо. Когда у вас получится работающая регулярка, попробуйте её уменьшить.


1 car и cat

2 pop и prop

3 ferret, ferry, и ferrari

4 Любое слово, заканчивающееся на ious

5 Пробел, за которым идёт точка, запятая, двоеточие или точка с запятой.

6 Слово длиннее шести букв

7 Слово без букв e


>// Впишите свои регулярки