Урок 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
для поиска всех чисел. Результат выводится в консоль в виде массива чисел.