В этом блоге давайте изучим некоторые основы регулярных выражений Javascript на примере.
Регулярные выражения в JavaScript
Регулярное выражение или RegEx - это шаблон, используемый для сопоставления комбинаций символов в строке. В JavaScript регулярные выражения также являются объектами.
Давайте начнем с нескольких основных примеров, а затем более подробно объясним синтаксис, необходимый для построения и понимания регулярных выражений.
Давайте создадим объект RegExp, re, который соответствует любой строке S, которая начинается и заканчивается той же гласной.
Строка S,
Длина строки S составляет ›= 3.
Строка S состоит только из строчных букв (т.е. [a-z]).
В этом примере мы будем использовать Node JS, язык Javascript на стороне сервера.
Node JS - это кроссплатформенная библиотека и среда выполнения, которая используется для создания запущенных приложений JavaScript вне браузера.
А Angular J S - это каркас веб-приложений для создания интерфейсных веб-приложений на основе сценария Java.
Node JS - это язык на стороне сервера для создания сред выполнения приложений на основе Javascript.
Я буду использовать следующий код RegEx.js, размещенный в моем репозитории Github.
Чтобы выполнить приведенный выше сценарий NodeJS, нам нужно создать входной файл, который может быть предоставлен в качестве стандартного ввода для чтения строковых значений для проверки регулярного выражения.
Я буду использовать следующий файл RegExInput.txt в качестве входного файла, который содержит строки, которые необходимо сравнить с регулярным выражением.
Теперь давайте запустим сценарий для указанного выше входного файла, используя следующую команду:
node RegEx.js < RegExInput.txt
Результат будет выглядеть так, как показано ниже,
Поскольку первая входная строка не начинается и не заканчивается одной и той же гласной, она возвращается как ложь, остальные строки удовлетворяют условию, возвращаемому таким образом, как истинное.
Теперь давайте исследуем используемое регулярное выражение и узнаем некоторые основы формирования такого шаблона регулярного выражения.
Используется регулярное выражение,
/^([aeiou])\w*\1$/ig
Используется литерал регулярного выражения,
/^([aeiou])\w*\1$/
Литерал регулярного выражения - это шаблон RegEx, заключенный в косую черту.
Используется шаблон регулярного выражения,
^([aeiou])\w*\1$
Начнем с изучения закономерности,
^ → Соответствует началу ввода. Если для многострочного флага установлено значение true, также соответствует сразу после символа разрыва строки.
[aeiou] → Набор символов [aeiou] будет соответствовать любому одному символу из набора {a, e, i, o, u}.
Шаблоны ^ и [aeiou] обеспечивают соответствие нашего регулярного выражения строкам, начинающимся с любого из символов гласной.
Важная часть здесь заключается в том, что если строка начинается с первого символа гласной, нам нужно сопоставить его, а также запомнить. Нам нужно запомнить гласную, которая была сопоставлена в начале строки, чтобы сравнить и проверить, является ли она той же гласной, которая появляется в конце строки.
Чтобы зафиксировать совпадение и запомнить захваченное совпадение, мы будем использовать JavaScript «Группы захвата».
Группы захвата определяются путем указания совпадающих символов в круглых скобках.
([aeiou]) → Круглые скобки, заключающие квадратную скобку (набор символов), - это запись, которую нужно зафиксировать и запомнить первую совпавшую гласную.
\ w * → Эта часть шаблона регулярного выражения соответствует нулю или более буквенно-цифровому слову, включая символ подчеркивания (т. е. [A-Za-z0–9_]).
Строка может содержать ноль или более буквенно-цифровых символов, за которыми следует первый символ гласной.
Обратитесь к ссылке для получения дополнительной информации о группах захвата Javascript.
Чтобы сослаться на зафиксированное совпадение, мы будем использовать «Обратные ссылки» JavaScript.
Теперь, когда мы прошли строку и достигли ее конца, нам нужно сопоставить последний символ строки и проверить следующие условия:
Для ссылки на первое зафиксированное совпадение мы будем использовать «Обратную ссылку» со следующими обозначениями.
\ 1 $ → Эта часть шаблона регулярного выражения ссылается на символ, запомненный первой совпавшей группой захвата.
Последний символ строки будет сопоставлен только в том случае, если он совпадает с первым зафиксированным совпадением.
Обратитесь к ссылке для получения дополнительной информации о обратных ссылках на Javascript.
Поместив шаблон регулярного выражения в косую черту, мы получим литерал регулярного выражения.
Литерал регулярного выражения в сочетании с флагами дает нам полное регулярное выражение.
ig → Эта часть регулярного выражения обозначает флаги.
i: игнорировать регистр
g: глобальное соответствие
Теперь, когда мы построили все регулярное выражение (/ ^ ([aeiou]) \ w * \ 1 $ / ig), мы можем использовать его с методом регулярного выражения .
Доступны два метода регулярных выражений, как показано ниже:
- test (): этот метод выполняет поиск совпадения между регулярным выражением и указанной строкой. Возвращает истину или ложь.
- executes (): этот метод выполняет поиск совпадения в указанной строке. Возвращает массив результатов или ноль.
В нашем примере нам нужно проверить, удовлетворяет ли данная строка регулярному выражению, поэтому мы использовали метод test ().
Использованная литература:
[1] https://javascript.info/regexp-groups
[2] https://javascript.info/regexp-backreferences
Спасибо за чтение. Ваше здоровье!!!
Первоначально опубликовано на https://serantechexplore.wixsite.com 21 июня 2020 г.