Регулярные выражения (regEx) — это шаблоны, используемые для сопоставления комбинаций символов в строке. Они также являются объектами (в Javascript), что означает, что на них могут быть вызваны функции, определенные в классе obj regEx. regEx является общей концепцией и может использоваться на любом языке. Регулярные выражения в основном используются для проверки строки, т. е. соответствует ли данная строка определенному формату или нет. Более реальным примером может быть проверка формы/ввода. Форма состоит из различных полей, таких как имя, возраст, адрес электронной почты, пароль и т. д.. Все поля уникальны и должны быть определенным образом отформатированы, здесь на помощь приходят регулярные выражения. В сегодняшней статье мы рассмотрим, как использовать регулярные выражения в JavaScript, которые можно использовать и в других языках (с небольшими изменениями).

РУЧНАЯ ПРОВЕРКА ПРОТИВ РЕГУЛЯРНЫХ ВЫРАЖЕНИЙ

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

Например, подтвердите пароль, если он должен удовлетворять следующим условиям:

  • Минимум 8 символов
  • Должен содержать хотя бы 1 число
  • Следует начинать с заглавной буквы
  1. Минимум 8 символов
var str = 'a234567B'  
if(str.length>=8){  return true }

2. Должен содержать хотя бы 1 номер

var str = 'a234567B' 
var num = 0  
for(s in str){  
    if(parseInt(str[s])){   
          num+=1;  
    } 
}  
if(num.length>=1){  return true }

3. Следует начинать с заглавной буквы.

var str = 'a234567B'  
if(str[0]>="A"&&str[0]<="Z"){  return true }

Как мы можем видеть выше, для выполнения условия мы используем несколько операторов if-else вместе с циклами, которые должны перебирать длину строки или что-то еще, и это только для проверки одного поля. Это плохая практика программирования, поскольку она увеличивает кодовую базу, пространство и сложность времени. Итак, хорошее эмпирическое правило — использовать регулярные выражения. Использование регулярных выражений связывает всю необходимую логику в одной строке. Это также значительно снижает потребность в использовании итераторов или нескольких операторов if-else.
Теперь давайте рассмотрим его синтаксис и способы его использования.

ВВОД, СИНТАКСИС И ФОРМАТИРОВАНИЕ

Для проверки любого ввода нам требуется логика форматирования, поэтому эта логика заключена в две косые черты «//».

var regEx = /regular-expression-here/;

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

E.g:

var str = "ABCDEFQQQ"  
var regEx = /QQQ/  
if(regEx.test(str)){ //if statement is executed.  return true; }

Дана строка «ABCDEFQQQ», а шаблон, который мы проверяем, — «QQQ». Как было сказано ранее, регулярное выражение также является объектом в JavaScript, поэтому мы вызываем метод под названием «тест» для объекта regEx. Метод 'test' принимает аргумент, который является тестовой строкой, и возвращает логическое значение, т. е. возвращает true, если шаблон найден (в соответствии с указанными правилами), и false в противном случае.
По умолчанию регулярные выражения чувствительны к регистру, чтобы сделать его нечувствительным к регистру, просто добавьте «i» в конце выражения.

var regEx = /QQQ/i 
var str = "ABCqqq"  
if(regEx.test(str)){   
// if statement executed,because expression is now case //insensitive.  
alert("match found") 
}

НАБОР СИМВОЛОВ И ДИАПАЗОН

Предположим, нам нужно найти шаблон (опять же, независимо от позиции), где первым символом в шаблоне должна быть гласная (a, e, i, o, u), за которой следует 123. Здесь мы можем использовать набор символов и диапазон. Набор символов определяется внутри квадратных скобок ‘[]’.

var regEx = /[aeiou]123/

«aeiou» помещается в квадратную скобку, что означает, что первым символом в шаблоне может быть любая гласная. Опять же, по умолчанию выражения чувствительны к регистру, чтобы сделать их нечувствительными, мы могли бы использовать флаг «i» или включать заглавные гласные буквы.

var regEx = /[aeiou]123/i 
//(or) 
regEx = /[aeiouAEIOU]123/

А что если первым символом может быть любой алфавит, а не только гласная? Если вы скажете, что мы можем включить все алфавиты, например, [abcdefghijklmnopqrstuvwxyz]. Вы не ошиблись, но проще всего было бы указать диапазон.

var regEx = /[a-zA-Z]123/

При необходимости можно использовать несколько наборов символов. Мы также можем исключить определенные символы в начале или в любом месте шаблона, используя знак «^». Например, мы могли бы инвертировать приведенный выше сценарий, в котором первый символ в образце не может быть гласным.

var regEx = /[^aeiou]123/

ПОВТОРЯЮЩИЕСЯ НАБОРЫ СИМВОЛОВ

В шаблоне, если нам нужно иметь определенные символы в последовательных позициях, вместо указания набора для каждой позиции мы используем «{}», в котором мы описываем значение, значение представляет количество повторений. Например: шаблон, который должен включать 5 последовательных гласных. С нашими нынешними знаниями мы бы сделали что-то подобное.

var regEx = /[aeiou][aeiou][aeiou][aeiou][aeiou]/i

Приведенное выше выражение довольно утомительно и длинно, для сокращения мы можем использовать ‘{}’.

var regEx = /[aeiouAEIOU]{5}/

СОКРАЩЕННЫЕ ОБОЗНАЧЕНИЯ ДЛЯ РАЗЛИЧНЫХ НАБОРОВ СИМВОЛОВ

Вместо использования «[]» мы могли бы также использовать определенные сокращенные обозначения, подразумевающие то же самое значение.

  • \d:цифры, можно заменить [0–9]
  • \w:слова, можно заменить [a-zA-Z], пробел и '_' (подчеркивание)
  • \s: пробел, может заменить ‘ ‘(пробел) и ‘ ‘(табуляция)
  • \t: пробел, может заменить ‘ ‘ (только табуляция).

ПОЛОЖЕНИЕ И ЧАСТИ

До сих пор нас заботил только узор, и нас совершенно не заботило, где он начинается и где заканчивается. Все, что мы искали, это проверить, содержится ли шаблон в строке или нет. Что, если бы мы хотели иметь только шаблон, а не какие-либо дополнительные символы, предшествующие шаблону или следующие за ним. Для этого мы можем использовать '^' и '$'. '^'Представляет начало строки, а '$' представляет конец строки.
Предупреждение: '^' используется в '[ Скобки ]' означают исключение символов в квадратных скобках, например, [^abc] означает исключение abc, тогда как '^' вне скобок '[]' обозначает начало строки, например ^[aA] означает, что строка должна начинаться с «а» или «А»

var regEx = /^[a-z]{5}$/

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

Иногда мы не можем быть уверены в длине строки, но строка должна соответствовать определенному формату.

Например, рассмотрите проверку электронной почты, которая следует следующему формату:

имя пользователя@домен.com/net/in/co

Как мы видим, адрес электронной почты следует формату, он должен начинаться с набора символов (алфавитов), за которым следует at, за которым следует набор символов, снова за которым следует точка (.), а затем следует расширение (com , чистый, в) в основном набор символов. Простое соглашение, которому мы могли бы следовать, состоит в том, чтобы разделить выражение на 3 части. Первая часть может содержать любое количество символов, вторая часть такая же, как и первая, с символом «@» между ними, а третья часть — набор символов (только строчные буквы).

В регулярных выражениях мы можем разделять шаблоны с помощью круглых скобок «()».

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

var regEx = /^([a-zA-Z\.-]+)@([a-zA-Z\.-]+).([a-z]{2,10})/

Объяснение: '^' в первой части означает начало шаблона, первая часть может состоять из любых букв, включая точку (.) и дефис (-), обратите внимание, что я использовал '\.' вместо '.' напрямую, потому что указанный '.' означает запись подстановочного знака, '.' подобен заполнителю для любого символа, поскольку нам нужно, чтобы сам '.' не функционировал как ввод подстановочного знака, мы явно приводим его как обычный символ, используя ' .'. Я использовал «+» после набора символов, который не был объяснен выше, используя функции плюса, аналогичные {value}, за исключением того факта, что + означает больше или равно 1, тогда как {value} больше похоже на жестко запрограммированное. Поскольку мы не уверены в длине имени пользователя, мы используем «+». Вторая и третья части получают такое же объяснение, в третьей части указаны два значения в пределах '{}' вместо одного, два значения означают диапазон символов, здесь {2,10} означает не менее 2 и не более 10 символов .

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

Подведение итогов

Так что это было все о регулярных выражениях. Надеюсь, вам понравилось читать эту статью, если да, то хлопните в ладоши. Есть сомнения или не понял какую-то часть четко? Не стесняйтесь комментировать и давайте обсудим. Вы также можете связаться со мной в Twitter/LinkedIn.