Перейти к основному содержимому

Регулярные выражения

@serverSerrverlesskiy

Регулярные выражения (англ. regular expressions) — формальный язык поиска и осуществления манипуляций со строками в тексте , основанный на использовании метасимволов.

Регулярные выражения позволяют:

  • Искать текст в строке
  • Заменять подстроки в строке
  • Извлекать информацию из строки

search

JavaScript, наряду с Perl, это один из языков программирования в котором поддержка регулярных выражений встроена непосредственно в язык .

Видео

Сложность использования

the complexity of using

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

let regExp = /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

Определение регулярных выражения

search

Определение регулярного выражения, это создание шаблона, на основе которого будет происходить работа со строками. В JavaScript регулярные выражения - это объект, который может быть определён двумя способами.

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

let regExp = /шаблон/

Если вы решили создавать регулярные выражения при помощи литералов, то стоит учитывать, что такой метод создания не допускает динамическое изменение задаваемых значений. Происходит это из-за того, что литералы регулярных выражения вызывают предварительную компиляцию при анализе скрипта.

Использование

pressing the button

Использование регулярных выражений рассмотрим на примере:

let regExp = /banana/

Этим кодом мы создали простое регулярное выражение, которое ищет строку banana. Для тестирования регулярного выражения можно использовать метод .test(string), результатом работы метода является boolean значение.

Интерактивный редактор
Результат
Loading...

В примере регулярное выражение ищет подстроку banana в строке str.

Якоря

anchor

Якоря привязывают шаблон к началу или концу строки. Для привязки к началу строки используется - ^, а к концу - $.

Интерактивный редактор
Результат
Loading...

Используя такой шаблон /banana/ вы будете искать banana во всей строке. Если нужно проверить на полное совпадение строки с шаблоном нужно использовать якоря /^banana$/. Метод .test() вернёт true только в том случае, если вся строка это banana.

Флаги

Flag

Флаги используются для расширения осуществляемого регулярными выражениями поиска.

  • g - при поиске ищет все совпадения;
  • i - поиск не зависит от регистра [Z-z];
  • m - многострочный режим;
  • s - включает режим dotall, при котором точка . может соответствовать символу перевода строки;
  • y - выполняет поиск начиная с символа, который находится на позиции свойства lastindex текущего регулярного выражения;
  • u - включает поддержку Unicode.

Использование флагов при разных способах создания шаблона регулярного выражения

let regExp = /шаблон/флаг // prettier-ignore

Обратите внимание, что флаги являются неотъемлемой частью регулярного выражения. Флаги не могут быть добавлены или удалены позднее. Также флаги можно комбинировать.

Интерактивный редактор
Результат
Loading...

Попробуйте убрать флаг i из примера.

Итого

Тема очень обширная и нечасто используемая нами в разработке, поэтому если интересно, то подробней можно познакомиться с ней здесь, здесь и здесь.

EnglishMoji!

Проблемы?

Problem

Пишите в Telegram или ВКонтакте, а также подписывайтесь на наши новости

Вопросы

Question

Для чего нужны регулярные выражения?

  1. Cоздание шаблонов
  2. Манипуляции со строками
  3. Редактирования строк

Какой символ используется для литерального создания регулярного выражения?

  1. Слеш /
  2. Обратный слеш \
  3. Квадратные скобки []

В каком способе создания регулярного выражения не допускается дальнейшее динамическое изменение задаваемых значений?

  1. В литеральном
  2. В конструкции
  3. При любом способе динамическое изменение допустимо

Для того чтобы понять насколько вы усвоили этот урок пройдите тест в мобильном приложении в нашей школы по этой теме.

EnglishMoji!

Ссылки

  1. Learn JavaScript
  2. MDN Web Docs
  3. JS RegExp

Contributors ✨

Thanks goes to these wonderful people (emoji key):


IIo3iTiv


Dmitriy Vasilev

💵

Resoner2005

🐛 🎨 🖋

Navernoss

🖋 🐛 🎨