☕ Шпаргалка по регулярным выражениям в JavaScript
Разбираемся в особенностях написания регулярных выражений и способах их применения в JavaScript.
О регулярных выражениях
Регулярные выражения в JS, как и в других языках, – это обработка текста с помощью заданных шаблонов (масок). Для записи шаблонов используют PCRE-синтаксис. Каждый шаблон регулярного выражения в JS является объектом.
Создание регулярных выражений в JS
Для создания регулярного выражения используйте один из способов:
- С помощью литералов /…/ – обозначений регулярных выражений. Пример:
let reg = /hello/; - Через специальный объект RegExp:
letreg = new RegExp('hello');
Написание шаблона регулярного выражения
Регулярное выражение объявляется в коде программы с помощью шаблона. С помощью шаблонов программа сравнивает строки на совпадение.
Шаблон заключается в символы /../ и состоит из букв и цифр: /hello/. Или содержит специальные символы: *, + и другие.
Использование простых шаблонов
Простые шаблоны находят только прямое совпадение. Шаблон /hello/ соответствует только такому же порядку букв и нижнему регистру. В строке Mum, hello! How are you? будет совпадение со словом hello. Но в строке Hello! How are you? нет совпадения из-за верхнего регистра первой буквы h.
Использование специальных символов в шаблонах
Специальные символы определяют дополнительные условия для поиска подстроки.
Общие специальные символы:
^– начало ввода.$– конец ввода строки.\– для указания, что специальный символ является частью строки, а не шаблона. Для поиска знака звездочка*– шаблон будет выглядеть:/\*/, или для экранирования самого символа косой черты\..– один любой символ.
Соответствие набору символов
Следующие символы указывают, к какому набору символов относится шаблон:
\w- соответствие буквам, цифрам и символам подчеркивания.\W- обратный эффект: соответствие всему, что не относится к буквам, цифрам или символам подчеркивания.\d– соответствие цифрам 0-9.\D– соответствие всему, но не цифрам 0-9.\s– соответствие символам пробела.\S– соответствие не символам пробела.[…]– соответствие любому из символов, указанному в скобках.[^…]- соответствие всем символам, не указанных в скобках.
Указание количества символов для соответствия
+– повторение символа минимум от одного раза.*– повторение символа от нуля.?– появление символа в указанной позиции нуль или один раз.|– соответствует логическому ИЛИ./hello|bye/- или hello, или bye.{n}– n вхождений символа в строке.{m, n}– вхождения от m до n раз символа в строке.
Скобочные группы в регулярных выражениях:
(XYZ)– группировка символов или скобочная группа. Найденная строка в скобках запоминается для дальнейшего использования.(?:X)– группировка символов без запоминания совпадений.X(?=Y)– соответствует X, за которым следует Y.X(?!Y)– соответствует X, за которым не следует Y.
Использование флагов в регулярных выражениях
Флаги используются как дополнительные сведения о шаблоне. Можно использовать как по одному, так и вместе в произвольном порядке.
В JS доступно 5 флагов:
g– поиск всех совпадений в строке.i– регистронезависимый поиск подстроки.m- определяет текст как множество строк и ищет совпадения маркеров^,$для каждого начала и конца строки в тексте.u– запись в регулярное выражение Unicode.y- поиск с символа на позиции lastindex в строке.
Указать флаги можно или в конце литерала, или добавить в конструктор RegExp.
let reg1 = /hello/i;
let reg2 = new RegExp('hello','i');
Методы для работы с регулярными выражениями
Методы обработки и поиска совпадений шаблона регулярного выражения со строкой текста:
test()– метод проверяет на совпадение подстроки и шаблона, возвращает значениеtrueилиfalse.search()– также ищет совпадения и возвращает индекс при успешном результате или -1 в противном случае.exec()– метод находит подстроки заданного шаблона в целевой строке и в результате возвращает массив с результатами,null– в противном случае.
Пример использования этих методов:
let string1 = 'Hello, my friend! I\\'m really glad to see you'; let reg1 = /friend\\!/; console.log(reg1.test(string1)); // true let string2 = 'Hello, friend! Are you real friend\\?'; let reg2 = /friend/; console.log(string2.search(reg2)); // 7 let reg3 = /(fr.)/; console.log(reg3.exec(string2)[0]); // fri
Также регулярные выражения используются вместе со строчными функциями в JS: replace(), split(), match(). Пример использования этих методов смотрите в статье 40 основных методов для работы со строками в JS.
В этой статье мы познакомились со способами создания регулярных выражений, скобочными символами в шаблонах, а также узнали методы для работы с регулярным выражением и целевой строкой.