Далеко и не только с регулярными выражениями

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

Одна замечательная особенность RegEx заключается в том, что шаблоны и принципы не зависят от языка. Принципы не зависят от языка. Следовательно, хорошее знание принципов регулярных выражений было бы огромным подспорьем для разработчика Javascript, разработчика Java или разработчика Python. Однако существуют некоторые языковые идентификаторы регулярных выражений. Для целей этого руководства мы сначала рассмотрим RegEx без упоминания какого-либо языка программирования. Затем мы увидим, как использовать Javascript для проверки регулярных выражений в строке.

Формат регулярных выражений

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

/pattern/modifiers

Ниже показан шаблон RegEx.

/re/i

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

Простые шаблоны регулярных выражений

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

Тест на персонажа

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


Тестирование на персонажа

Тестирование одного из набора символов

Для проверки одного из набора символов используется оператор ИЛИ, который представляет собой одну черту (|), как показано ниже.


Тестирование одного из набора символов

Как ясно видно выше, делается попытка сопоставить символы ‘d’, ‘c’ или ‘m’. В тексте содержится символ ‘c’, следовательно, совпадение успешное.

Тестирование на один из наборов символов может быть выполнено с помощью квадратных скобок оператор []. Это показано ниже.


Проверка одного из набора символов с использованием квадратных скобок

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


Тестирование одного из набора символов с использованием диапазона

Представьте, что мы хотим сопоставить символ «C» в верхнем регистре. Попытка сделать это потерпит неудачу. Как мы справимся с этим сценарием? Мы используем модификаторы, и этим займемся дальше.

Модификаторы

Как следует из названия, модификаторы — это параметры, используемые для точной настройки соответствия или поиска. Некоторыми примерами модификаторов являются модификатор без учета регистра, обозначаемый буквой i, глобальный модификатор, обозначаемый буквой g, и многострочный модификатор, обозначаемый буквой m.

Модификатор без учета регистра, i

Этот модификатор гарантирует, что регистр символа или наборов символов будет пропущен во время поиска. Этот модификатор позволяет символу «f» в нижнем регистре соответствовать символу «F» в верхнем регистре. Пример показан ниже.


Модификатор без учета регистра

Глобальный модификатор, г

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


Глобальный модификатор

Все это время мы пытались сопоставить один символ. Если мы хотим сопоставить слова или полные тексты, мы используем квантификаторы.

квантификаторы

Квантификаторы показывают, сколько раз мы ожидаем увидеть символ или позицию, в которой он должен появиться. Квантификаторы включают, помимо прочего, оператор плюса (+), оператор фигурных скобок ({}), оператор вопросительного знака (?), оператор вставки (^) и оператор доллара ($).

Плюс Оператор +

Этот оператор означает, что в тексте присутствует один или несколько символов. Найдите ниже хороший пример.


Оператор RegEx Plus

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

Оператор фигурных скобок {}

Этот квантификатор показывает количество или диапазон чисел, совпадающих с символом в тексте. Мы могли бы захотеть сопоставить только 5 символов алфавита. Ниже показан пример.


Оператор фигурных скобок

Оператор вопросительного знака, ?

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


Оператор вопросительного знака

Отсутствует оператор (^)

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


Не хватает оператора

В приведенном выше примере в начале текста есть число, поэтому шаблон не соответствует тексту. Удаление числа (5) в начале текста приводит к другому результату, который соответствует показанному ниже.


Оператор ^ отсутствует

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


Оператор каретки для отрицания

Как видно выше, шаблон соответствует любому символу, который не является алфавитом, а не символом подчеркивания (_).

Оператор знака доллара $

Оператор знака доллара сопоставляет любой текст с символом в конце. Это гарантирует, что в конце текста не будет других несовпадающих символов, как показано ниже.


Оператор знака доллара

В приведенном выше примере в конце текста есть число, поэтому шаблон не соответствует тексту. Удаление числа (4) в конце текста приводит к другому результату, который соответствует показанному ниже.


Знак доллара

Со временем замечено, что длина узора неудобно растет. Более того, мы могли бы захотеть отобразить специальные символы, такие как точка, запятая, пробелы и т. д. Для этого мы используем escape-символы и метасимволы.

Метасимволы и escape-символ

*Экранирующий символ *
Экранирующий символ — обратная косая черта. Он используется для добавления в шаблон специальных символов, таких как точка. Это показано ниже.


Спасательный персонаж

Метасимволы

Это символы, которые имеют особое значение и используются для представления определенных шаблонов. Некоторые метасимволы включают \w, \d, \W, \D, \s, \S.
Краткое объяснение некоторых из этих метасимволов показано ниже.

\w
Соответствует словесному символу, который включает буквенно-цифровые символы и символ подчеркивания (_). Эквивалент этого метасимвола показан ниже:

/\w/i is the same as /a-z0-9\_/i

\ Вт
Это отменяет символ слова \w. Таким образом, метасимвол \W соответствует всему, что не является ни буквенно-цифровым символом, ни символом подчеркивания (_). Эквивалент этого метасимвола показан ниже:

/\W/i is the same as /^a-z0-9\_/i

\ д
Это соответствует символу цифры, который включает все числа от 0 до 9. Эквивалент этого метасимвола показан ниже:

/\d/i is the same as /[0-9]/i


Это отменяет метасимвол цифры \d. Таким образом, метасимвол \D соответствует всему, что не является цифрой. Эквивалент этого метасимвола показан ниже:

/\D/i is the same as /^0-9/i


Это соответствует любым пробелам.


Это отменяет символ пробела \s. Таким образом, метасимвол \S соответствует всему, что не является пробелом. Эквивалент этого метасимвола показан ниже:

/\S/i is the same as /^\s/i

Проверка регулярных выражений с помощью Javascript

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

/^[a-z0-9\._+-]+@[a-z0-9\._+-]+\.[a-z]+$/i

Первая часть регулярного выражения [a-z0–9._+-]+ который соответствует любому буквенно-цифровому символу и символам, таким как . _ + -

Вторая часть RegEx — это символ @, который соответствует одному символу @.

Третья часть регулярного выражения [a-z0–9._+-]+ который соответствует любому буквенно-цифровому символу и символам, таким как . _ + -

Четвертая часть RegEx — это . что соответствует полной остановке.

Пятая часть шаблона RegEx [a-z]+ что соответствует всем символам алфавита

Следует отметить оператор вставки (^), который гарантирует, что только символы, соответствующие шаблону RegEx, начинают текст, оператор знака доллара ($), который гарантирует, что текст завершается только символами, которые соответствуют шаблону RegEx, и модификатор без учета регистра, который соответствует тексту независимо от регистра символов.

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

/^[\w\._+-]+@[\w\._+-]+\.[a-z]+$/i

В javascript, test() метод можно использовать для проверки шаблона регулярных выражений. Ниже показан метод, который проверяет адрес электронной почты.

const text="";

function checkEmail(emailAddress) {

const pattern = /^[a-z0-9\._+-]+@[a-z0-9\._+-]+\.[a-z]+$/i;

return pattern.test(emailAddress);

};

checkEmail('usman.amos@gmail.com'); // Returns true

checkEmail('usman@gmail.com'); // Returns true

checkEmail('?@gmail.com'); // Returns false

checkEmail('usman.amosgmail.com'); // Returns false

checkEmail('usman.amos@gmail.'); // Returns false

Вывод

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

Ресурсы

Ниже приведены жизненно важные ресурсы для изучения того, как использовать регулярные выражения.

https://regexr.com/— Онлайн-платформа для изучения и практики регулярных выражений.

https://www.w3schools.com/jsref/jsref_obj_regexp.asp— Краткое руководство по изучению основ регулярных выражений

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *