Добавить в корзинуПозвонить
Найти в Дзене

Регулярные выражения: гайд по написанию и использованию regex / regexp (кому как удобнее

Регулярные выражения: гайд по написанию и использованию regex / regexp (кому как удобнее) 💡 Наверняка вы сохраните этот пост себе в Избранное - я бы такое сохранил :) Регулярное выражение (или "регулярка") в любом ЯП это последовательность символов, которая описывает шаблон для поиска или замены текста. Например, выражение /sravni/ найдет точное совпадение слова «sravni» в строке. Самые банальные регулярки, которые известны всем - это проверка email, номера телефона, ФИО, никнейма и прочее. Эти выражения почему-то многие боятся составлять, хотя на деле это не сложно Для того, чтобы выражения работали, они должны состоять из набора элементов, таких как литералы (или группы литералов), метасимволы и квантификаторы. Как правило, в коде или bash-командах регулярки обозначаются слэшами в начале и в конце - /someText/, также в разных языках могут использоваться отдельные классы или библиотеки для них (RegExp() в JS, re в Python) Пока вы чилите на выходных, займу ваш мозг полезнятиной и

Регулярные выражения: гайд по написанию и использованию regex / regexp (кому как удобнее)

💡 Наверняка вы сохраните этот пост себе в Избранное - я бы такое сохранил :)

Регулярное выражение (или "регулярка") в любом ЯП это последовательность символов, которая описывает шаблон для поиска или замены текста. Например, выражение /sravni/ найдет точное совпадение слова «sravni» в строке.

Самые банальные регулярки, которые известны всем - это проверка email, номера телефона, ФИО, никнейма и прочее. Эти выражения почему-то многие боятся составлять, хотя на деле это не сложно

Для того, чтобы выражения работали, они должны состоять из набора элементов, таких как литералы (или группы литералов), метасимволы и квантификаторы. Как правило, в коде или bash-командах регулярки обозначаются слэшами в начале и в конце - /someText/, также в разных языках могут использоваться отдельные классы или библиотеки для них (RegExp() в JS, re в Python)

Пока вы чилите на выходных, займу ваш мозг полезнятиной и раскидаем регулярное выражение для валидации email на атомы :)

Так выглядит базовый шаблон проверки email:

^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$

👨‍⚕ Пациент, что вы видите на этой картинке?

Начнем с начала выражения и двинемся до его конца

1. ^ — метасимвол, обозначающий начало строки. Тут мы убеждается, что email не начинается с лишних символов

2. [a-zA-Z0-9_.+-]+ — группа литералов:

- [a-zA-Z0-9] — любые буквы (латинские) и цифры

- _.+- — разрешенные специальные символы в локальной части email

- + — квантификатор, означающий «один или более раз»

3. @ — литерал, обязательный символ разделения локальной части и домена.

4. [a-zA-Z0-9-]+ — доменное имя:

- [a-zA-Z0-9] — буквы и цифры

- - — допустимый символ в домене

- + — повторение от 1 раза

5. \. — экранированный символ точки (в регулярках точка — метасимвол, поэтому её нужно экранировать через `\`).

6. [a-zA-Z0-9-.]+ — доменная зона и поддомены:

- [a-zA-Z0-9] — буквы и цифры,

- - — дефис для поддоменов,

- \. — точка для разделения уровней домена,

- + — повторение от 1 раза

7. $ — метасимвол, обозначающий конец строки. Убеждается, что email не заканчивается лишними символами

💊 Несколько примеров использования regex

Ищем все вхождения email в file.txt в bash:

grep -E "^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$" file.txt

Проверяем корректность никнейма в Telegram на Python:

const tgRegex = /^@[a-zA-Z0-9_]{5,32}$/;

tgRegex.test("@username123"); // true

Заменяем все вхождения World на "JS" в строке на JavaScript:

"Hello, World!".replace(/World/, "JS"); // "Hello, JS!"

Чтобы всем было легче жить, в Интернете есть онлайн-песочницы по тестированию регулярных выражений, например regex101.com и regexr.com

Сохраняйте пост себе, кидайте друзьям/коллегам-погромистам и пользуйтесь на здоровье :) В комменты к посту закину наглядную картинку со шпаргалкой как вы любите

#regex #regexp #гайд #guide #cheatsheet

👉 @no_exit_from_it