Урок 21: Регулярные выражения
Регулярные выражения (regex) — это мощный инструмент для поиска и манипулирования текстом. Они позволяют описывать шаблоны для строк и использовать их для проверки, поиска и замены текста. В этом уроке мы рассмотрим основы регулярных выражений и приведем примеры их использования.
Основы регулярных выражений
Регулярные выражения состоят из символов и метасимволов, которые описывают шаблон поиска. В JavaScript регулярные выражения создаются с помощью литералов регулярных выражений или конструктора RegExp.
Примеры создания регулярных выражений
// Литерал регулярного выражения
let regex1 = /hello/;
// Конструктор RegExp
let regex2 = new RegExp('hello');
// Регулярное выражение создано
Основные метасимволы
Регулярные выражения включают множество метасимволов для создания сложных шаблонов. Вот некоторые из них:
. — любой одиночный символ, кроме новой строки.
^ — начало строки.
$ — конец строки.
* — ноль или более повторений предыдущего символа.
+ — одно или более повторений предыдущего символа.
? — ноль или одно повторение предыдущего символа.
\d — любая цифра (эквивалентно [0-9]).
\w — любая буква, цифра или подчеркивание (эквивалентно [A-Za-z0-9_]).
\s — любой пробельный символ (включая пробел, табуляцию, новую строку).
Примеры использования
Рассмотрим несколько примеров использования регулярных выражений в JavaScript.
Пример 1: Проверка строки на соответствие шаблону
Метод test проверяет, соответствует ли строка регулярному выражению.
// Пример проверки строки на соответствие шаблону
let regex = /hello/;
console.log(regex.test('hello world')); // true
console.log(regex.test('world')); // false
В этом примере регулярное выражение /hello/ проверяет наличие подстроки "hello" в строке.
Пример 2: Поиск совпадений в строке
Метод match возвращает массив всех совпадений строки с регулярным выражением.
// Пример поиска совпадений в строке
let regex = /\d+/g;
let result = 'There are 123 apples and 456 oranges'.match(regex);
console.log(result); // ['123', '456']
В этом примере регулярное выражение /\d+/g находит все последовательности цифр в строке.
Пример 3: Замена текста в строке
Метод replace заменяет совпадения строки с регулярным выражением на заданную подстроку.
// Пример замены текста в строке
let regex = /apples/;
let result = 'I like apples'.replace(regex, 'oranges');
console.log(result); // 'I like oranges'
В этом примере регулярное выражение /apples/ заменяет подстроку "apples" на "oranges".
Пример 4: Разделение строки
Метод split разделяет строку на массив, используя регулярное выражение в качестве разделителя.
// Пример разделения строки
let regex = /\s+/;
let result = 'This is a test'.split(regex);
console.log(result); // ['This', 'is', 'a', 'test']
['This', 'is', 'a', 'test']
В этом примере регулярное выражение /\s+/ используется для разделения строки по пробелам.
Упражнения
Упражнение 1: Проверка адреса электронной почты
Создайте регулярное выражение для проверки адреса электронной почты. Адрес электронной почты должен содержать символы до и после знака @, и домен после точки (например, example@mail.com). Используйте метод test для проверки различных строк.
Решение:
// Определение регулярного выражения для проверки адреса электронной почты
let regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
console.log(regex.test('example@mail.com')); // true
console.log(regex.test('example@mail')); // false
console.log(regex.test('example.com')); // false
Объяснение: Мы создали регулярное выражение для проверки адреса электронной почты и протестировали его с использованием метода test. Адрес должен содержать символы до и после знака @ и домен после точки.
Упражнение 2: Извлечение чисел из строки
Создайте регулярное выражение для извлечения всех чисел из строки. Используйте метод match для поиска всех чисел и выведите их в консоль.
Решение:
// Определение регулярного выражения для извлечения чисел
let regex = /\d+/g;
let str = '123 apples, 456 oranges, and 789 bananas';
let numbers = str.match(regex);
console.log(numbers); // ['123', '456', '789']
Объяснение: Мы создали регулярное выражение для извлечения чисел из строки и использовали метод match для поиска всех чисел. Результат выводится в консоль в виде массива чисел.