Регулярные выражения, широко известные как «regex» или «regexp», представляют собой строки, описывающие шаблон поиска. Вы можете использовать регулярные выражения, чтобы проверить, содержит ли строка определенный шаблон, извлечь информацию из строки и заменить части строки новым текстом.
Изучите базовый синтаксис регулярных выражений и способы их использования в JavaScript.
Базовый синтаксис регулярных выражений
Есть два способа создать регулярное выражение в JavaScript: используя литерал регулярного выражения и используя регулярное выражение конструктор.
Литерал регулярного выражения состоит из шаблона, заключенного между косой чертой, за которым следует необязательный флаг.
Например:
// Без флага
константа регулярное выражение_1 = /pattern/
// С флагом
константа регулярное выражение_2 = /pattern/флаг
Флаг — это необязательный параметр, который можно добавить в регулярное выражение, чтобы изменить его поведение. Например:
константа флаг регулярного выражения = /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».
Вопросы производительности при использовании регулярных выражений
Хотя регулярные выражения помогают сопоставлять строки и манипулировать ими, они также могут быть дорогостоящими с точки зрения производительности. Делать шаблоны как можно более конкретными и сохранять их простыми жизненно важно, чтобы они оставались эффективными.