Что такое регулярные выражения и зачем они нужны

Регулярные выражения — это инструмент, который позволяет фронтендеру быстрее находить и анализировать информацию. Благодаря ему можно не только эффективнее решать задачи, но и писать код, который будет лучше работать. Причём не стоит использовать этот метод везде: иногда он только усложняет жизнь.

Давайте разберёмся, что такое регулярные выражения и как грамотно их применять.

Что такое регулярные выражения?

Регулярные выражения — это формальный язык поиска подстроки в строке. Они поддерживаются многими программами: редакторами, системными утилитами, базами данных. Но особенно хорошо возможности этого инструмента раскрываются в языках программирования, в том числе в JavaScript.

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

Самое очевидное решение — использовать прямую замену, применив встроенную в JavaScript функцию:

'Быстрее всего мы догоним ее на машине'.replace('ее', 'его');

Однако ее является также окончанием слова Быстрее, а .replace() заменит первое вхождение подстроки. В итоге мы получим ожидаемо неверный результат: Быстрего всего мы догоним ее на машине. Поэтому необходимо проверить строку на наличие символа, стоящего перед ее: если это пробел, можно делать замену.

В задаче могут появиться и другие условия. Например, мы не знаем, в каком регистре написаны слова (ее, Ее, ЕЕ) и используется ли буква ё. Если добавить их в функцию, она станет слишком большой и сложной. Это может привести к другим ошибкам.

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

Востребованы ли регулярные выражения? 

Осенью 2021 года мы запустили масштабное исследование, чтобы понять, какие навыки востребованы и какие знания нужны разработчикам для трудоустройства на позицию джуна, мидла или сеньора. Чтобы получить максимально точные результаты, мы изучили 1 000 вакансий, а также провели интервью с тимлидами, эйчарами, наставниками и выпускниками HTML Academy.

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

Подробнее об исследовании можно прочитать в статье «Я ещё мидл или уже сеньор? И сколько мне должны платить?».

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

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

  • Поиск или замена подстроки в строке с «плавающими» (неизвестными) данными. Самая распространённая задача — найти в тексте ссылки и адреса электронной почты и сделать их кликабельными.

  • Валидация данных формы и ограничение ввода. Например, валидация номера телефона, электронной почты, данных паспорта гражданина РФ и другой информации.

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

Чаще всего фронтенд-разработчики встречаются с регулярными выражениями в задачах, связанных с валидацией данных. И обычно такие задачи решаются поиском нужного выражения в интернете и вставкой его кода в проект — по крайней мере, у начинающих специалистов.

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

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

По сути, код — это текст, по которому также можно запускать поиск, выполнять ручные и автоматические замены. При работе над большими проектами такие операции надо проводить очень аккуратно, чтобы не удалить ничего лишнего.

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

Какие типовые задачи решаются регулярными выражениями:

  • Поиск и гибкая замена в коде.

  • Подготовка и обработка данных. Когда вы выносите предварительные данные в текстовый редактор и готовите их для следующих операций.

  • Написание кода с большим количеством одинаковых конструкций.

Регулярные выражения вне фронтенда

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

Если разобраться с регулярными выражениями на примере JavaScript, то обращаться к ним в других языках программирования будет легче. Но изучать нюансы и стандарты внутри каждого языка точно придётся.

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

В некоторых случаях этот инструмент усложняет реализацию или увеличивает время выполнения кода. Регулярные выражения не нужны, если стандартные функции JavaScript справляются с задачей сами. Вот ещё пара ситуаций:

  • Структура содержимого данных хорошо описана, легко поддаётся разбору, можно применить нативные методы работы со строкой.

  • Предполагается работа с тегами, правка атрибутов или содержимого.

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

Выводы

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

Читайте так же:

  • Так выглядит Sony Xperia 1 III. Опубликованы официальные изображения флагманаТак выглядит Sony Xperia 1 III. Опубликованы официальные изображения флагмана Компания Sony представит новые телефоны Xperia на специальном мероприятии, которое пройдёт уже на этой неделе. Прямо перед анонсом AndroidNext опубликовал, как утверждает источник, официальные изображения Sony Xperia 1 III, правда разрешение пока оставляет желать лучшего. Внешних […]
  • Хакеры научились использовать NFT для кражи криптокошельковХакеры научились использовать NFT для кражи криптокошельков По данным ESET, NFT-токены в 2021 году стали одним из основных механизмов распространения вредоносных программ для нелегального майнинга или кражи криптокошельков. При этом Россия по итогам года стала лидером по числу пострадавших от атак, связанных с криптовалютой.Эксперты отметили, что […]
  • Контент для сайта заказатьКонтент для сайта заказать Координаторы SAT School Day могут использовать наш веб-сайт для размещения. Управления и просмотра всех заказов на тестовые материалы в рамках одной панели мониторинга. Школы могут использовать веб-сайт заказа для управления своей учетной записью и непосредственного заказа тестовых […]
  • Уникальный «чемоданный» дизайн Realme GT Master Edition раскрыт в рекламных материалахУникальный «чемоданный» дизайн Realme GT Master Edition раскрыт в рекламных материалах Китайская компания Realme готовит к выпуску серию смартфонов Realme GT Master Edition. Необычный дизайн ранее засветился в сети благодаря неофицальным рендерам. Теперь же китайские источник опубликовали фотографии Realme GT Master Edition из официальных рекламных материалов.  […]