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

Регулярные выражения JavaScript Программирование и разработка

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

Регулярные выражения ( называемые Regex или RegExp ) — это шаблоны, которые мы можем использовать для сопоставления комбинаций символов в строках. Они используются во многих языках для обработки текста и манипуляций.

В JavaScript регулярные выражения также функционируют как объекты и представлены собственным объектом RegExp. Формируя шаблон поиска с помощью Regex, мы можем легко искать данные и делать нашу работу более продуктивной.

В этом коротком руководстве мы познакомим вас с Regex в JavaScript и покажем, как начать работу с этим мощным инструментом.

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

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

Регулярным выражением может быть что угодно, от одиночного символа до сложного шаблона.

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

Вообще говоря, существует два типа регулярных выражений с одним основным отличием.

  • POSIX:все специальные символы должны быть экранированы (т. Е. С префиксом \символа), чтобы их можно было распознать.
  • PCRE (Perl-совместимые регулярные выражения):специальные символы поддерживаются напрямую, без необходимости экранирования.

JavaScript реализует разновидность стиля PCRE.

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

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

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

Давайте разберем основные вещи, которые вам нужно знать.

  • Начальный и конечный символы: буквальная нотация использует их для обозначения ограничений регулярного выражения.
  • Флаг: после окончания /регулярного выражения вы можете добавить несколько флагов. Это повлияет на поведение механизма RegExp, анализирующего ваше выражение.
  • Захват групп: это очень полезная функция из RegExps, которая позволяет вам захватывать часть совпадения, чтобы вы могли заменить ее чем-то другим или извлечь.
  • Группы без захвата: они позволяют сопоставить часть анализируемой строки.
  • Классы символов: они определяют шаблоны для соответствия внутри каждой группы. Например, запись az означает любой символ от a до z.
Читайте также:  Функция Fgets в C

Есть всевозможные специальные символы, которые мы используем для создания Regex. Мы обсудим это позже.

Объект RegExp в JavaScript

В JavaScript регулярные выражения представлены собственным объектом RegExp. Есть два основных способа создания нового объекта RegExp:

  • Буквальный синтаксис.
  • RegExp() конструктор.

Объект RegExp представляет собой экземпляр регулярного выражения.

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

В буквальном синтаксисе используются косые черты ( /pattern/). В синтаксисе конструктора используются кавычки ( «pattern»).

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

let greeting = /[hH]ello/
let prefix = «hH»
let suffix = «»
let objGreeting = new RegExp(«[» + prefix + «]ello» + suffix)
console.log(objGreeting)
//——————————-
let prefix1 = «bB»
let suffix1 = «w»
let objGreeting1 = new RegExp(«[» + prefix1 + «]ello» + suffix1)
console.log(objGreeting1)

Как создать Regex в JavaScript

Теперь мы знаем, что есть два способа создать Regex в JavaScript. Давайте рассмотрим это подробнее.

Конструктор регулярных выражений

Синтаксис: new RegExp(pattern[, flags])

Пример:

var regexConst = new RegExp(’abc’);

Литерал регулярного выражения

Синтаксис: /pattern/flags

Пример:

var regexLiteral = /abc/;

В обоих методах результатом является объект Regex. У них будут одинаковые методы и свойства. Давайте посмотрим на другой пример, в котором используются оба метода.

let myRegExp = /[2b|^2b]/
let myOtherRegExp = new RegExp(‘[2b|^2b]’)
console.log(myRegExp)
console.log(myOtherRegExp)

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

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

  • RegExp.prototype.test(): чтобы проверить, было ли найдено совпадение. Он принимает строку, которую мы проверяем на соответствие регулярному выражению. Он вернет истину или ложь, если совпадение будет найдено.
  • RegExp.prototype.exec(): Возвращает массив со всеми совпадающими группами. Он принимает строку, которую мы проверяем на соответствие регулярному выражению.

Создание шаблонов регулярных выражений

Шаблон Regex состоит из простых символов или комбинации простых и специальных символов. Самый простой шаблон Regex просто сопоставляет текст с тестовой строкой.

var regex = /hello/;
console.log(regex.test(‘hello world’));

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

Читайте также:  Адаптивный дизайн сайта

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

Флаги

Регулярные выражения предлагают пять необязательных флагов или модификаторов. Два самых популярных — gдля глобального поиска и iдля поиска без учета регистра.

Базовый синтаксис выглядит следующим образом:

new RegExp(’pattern’, ’flags’)

Давайте посмотрим на пример с использованием синтаксиса конструктора.

var regexGlobal = new RegExp(‘abc’,’g’)
console.log(regexGlobal.test(‘abc abc’));
var regexInsensitive = new RegExp(‘abc’,’i’)
console.log(regexInsensitive.test(‘Abc’));

Классы персонажей

Специальные символы — это символы с дополнительным значением. Это наборы персонажей с предустановленным поведением, которые вам нужно запомнить.

Классы символов — это все, что вы помещаете в скобки, чтобы синтаксический анализатор знал, какие символы вы хотите сопоставить. Например, /[abc]/будет соответствовать первой aв строке: bbbabcdebbb.

Давайте посмотрим на несколько примеров классов персонажей:

  • Диапазон символов: /[a-z]/ или/[0-5]/
  • Любой символ слова: /[\w]/
  • Пробельные символы: /[\s]/
  • Соответствовать символам конца строки: /\n/
  • и многое другое

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

Квантификаторы — это символы, имеющие особое значение в регулярном выражении. Например, +соответствует предыдущему выражению 1 или более раз и *соответствует предыдущему выражению 0 или более раз.

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

Продвинутые концепции для изучения дальше

Теперь у вас должно быть твердое представление о том, что такое Regex в JavaScript и как их создавать. Еще есть чему поучиться. Следующие, более сложные концепции, которые необходимо изучить, заключаются в следующем:

  • Группы захвата.
  • Exec метод.
  • Соответствующий протокол и имя хоста.
  • Разбор с помощью Regex.
Оцените статью
bestprogrammer.ru
Добавить комментарий