Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

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

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

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

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

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

Например:

// Без флага
константа регулярное выражение_1 = /pattern/

// С флагом
константа регулярное выражение_2 = /pattern/флаг

Флаг — это необязательный параметр, который можно добавить в регулярное выражение, чтобы изменить его поведение. Например:

instagram viewer
константа флаг регулярного выражения = /the/g;

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

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

константа регулярное выражение = новыйрегулярное выражение("Шаблон", "г");

регулярное выражение Конструктор принимает два параметра: шаблон — строку или литерал регулярного выражения — и флаг(и).

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

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

Вы можете использовать флаги вместе в одном выражении в любом порядке. Например:

константа регулярное выражение = новыйрегулярное выражение("Шаблон", "ги");

Это выражение будет соответствовать всем вхождениям «Pattern», независимо от регистра.

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

Вот некоторые из наиболее часто используемых метасимволов и их значения:

  • Подстановочный знак (.): Этот символ соответствует любому одиночному символу, кроме новой строки. Это полезный инструмент для сопоставления шаблонов с неизвестными символами.
  • Звезда Клини (англ.*): этот символ соответствует нулю или более вхождениям предыдущего символа или группы. Это позволяет предыдущему символу или группе появляться в строке любое количество раз, включая ноль.
  • Необязательный символ (?): этот символ соответствует нулю или одному вхождению предыдущего символа или группы.
  • Якорь начала линии (^): этот символ соответствует только началу строки или строки.
  • Якорь конца строки ($): этот символ соответствует концу строки или строки.
  • Набор символов/класс ([]): Набор символов соответствует любому символу из набора символов в строке. Вы определяете их с помощью квадратных скобок [] и вы можете указать набор фиксированных символов, специальных символов или определенных групп символов.
  • Альтернативный персонаж (|): этот символ соответствует предыдущему или следующему символу или группе. Работает аналогично ИЛИ. Оператор JavaScript.
  • Группирующий символ (()): символ группировки позволяет группировать символы или подвыражения, применять к ним операторы как единое целое и управлять порядком операций.

Проверка строки на соответствие регулярному выражению в JavaScript

В JavaScript вы можете проверить строку на соответствие регулярному выражению, используя несколько методов.

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

Метод испытаний

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

Например:

позволять регулярное выражение = /.com$/;
позволять ул = "example.com";
консоль.log(regex.test(str)); // истинный

Это регулярное выражение соответствует строке, оканчивающейся на «.com».

Метод exec

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

Например:

позволять регулярное выражение = /^\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/;
позволять ул = "123-456-7890";
позволять результат = регулярное выражение.exec (ул);

если (результат!== нулевой) {
консоль.бревно(`${результат[0]} является действительным номером телефона`);
} еще {
консоль.бревно("Неправильный номер телефона");
}

Приведенное выше регулярное выражение соответствует строке, начинающейся с необязательного "(", три цифры и необязательный ")". Затем он ищет необязательный "-", ".", или пробел, за которым следуют три цифры. Наконец, он ищет необязательный "-", ".", или пробел, за которым следуют четыре цифры в конце строки.

Это регулярное выражение соответствует номерам телефонов в формате «(xxx) xxx-xxxx», «xxx-xxx-xxxx», «xxx.xxx.xxxx» или «xxx xxx xxxx».

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

Метод замены

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

Например:

позволять строка = "Быстрая коричневая лиса прыгает через ленивую собаку.";
позволять выражение = /The/gi;
позволять newString = string.replace (выражение, "а");
консоль.log (новая строка); // "быстрая коричневая лиса перепрыгивает через ленивую собаку."

В этом примере вызывается заменять() метод на нить переменная, передавая регулярное выражение, выражение. Регулярное выражение будет соответствовать всем вхождениям «The» в строку, независимо от регистра. Вызов метода replace указывает ему заменить каждое вхождение строкой «a».

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

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