Регулярные выражения в JavaScript с примерами: на практике

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Регулярные выражения в JavaScript с примерами: на практике

Регулярные выражения (RegExp) — это мощный инструмент для поиска, замены и проверки строк. В JavaScript и Node.js они используются повсеместно: от валидации форм до парсинга логов. В этой статье мы разберем основы синтаксиса, популярные методы и решим несколько практических задач.

1. Создание регулярного выражения

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

  • Литеральная запись (рекомендуется): /pattern/flags
  • Конструктор new RegExp('pattern', 'flags')

Пример:

// Литеральная запись
const regexLiteral = /hello/i;

// Конструктор (полезно, когда паттерн динамический)
const pattern = 'hello';
const regexConstructor = new RegExp(pattern, 'i');

console.log(regexLiteral.test('Hello World')); // true
console.log(regexConstructor.test('HELLO'));    // true

2. Основные методы RegExp и String

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

2.1 Метод test()

Проверяет, есть ли совпадение в строке. Возвращает true или false.

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
console.log(emailRegex.test('user@example.com')); // true
console.log(emailRegex.test('invalid-email'));    // false

2.2 Метод exec()

Ищет совпадение и возвращает массив с детальной информацией (или null). Полезен для извлечения данных.

const str = 'Цена: 1500 рублей, скидка: 200 рублей';
const priceRegex = /(\d+)/g;
let match;

while ((match = priceRegex.exec(str)) !== null) {
    console.log(`Найдено число: ${match[1]}`);
}
// Вывод:
// Найдено число: 1500
// Найдено число: 200

2.3 Метод строки match()

Работает аналогично exec(), но вызывается от строки.

const text = 'JavaScript — это круто! JS используется везде.';
const result = text.match(/JS/g);
console.log(result); // [ 'JS', 'JS' ]

2.4 Метод строки replace()

Заменяет найденные совпадения на указанную строку или результат функции.

const phone = '+7 (123) 456-78-90';
const cleaned = phone.replace(/[\s\-\(\)\+]/g, '');
console.log(cleaned); // 71234567890

// Замена с использованием групп захвата
const date = '2024-03-15';
const formatted = date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3.$2.$1');
console.log(formatted); // 15.03.2024

2.5 Метод строки search()

Возвращает индекс первого совпадения или -1.

const sentence = 'Учите JavaScript на PythonLib';
const index = sentence.search(/javascript/i);
console.log(index); // 6

3. Флаги и спецсимволы: практические примеры

Флаги изменяют поведение поиска. Самые популярные:

  • g — глобальный поиск (ищет все совпадения, а не первое).
  • i — регистронезависимый поиск.
  • m — многострочный режим (якоря ^ и $ работают на каждой строке).

Пример с флагом m:

const multiLineText = `Первая строка
вторая строка
Третья строка`;

// Без флага m
console.log(multiLineText.match(/^вторая/)); // null

// С флагом m
console.log(multiLineText.match(/^вторая/m)); // [ 'вторая' ]

Основные спецсимволы

Символ Описание Пример
. Любой символ, кроме новой строки /х.й/ найдет "хай", "хой"
\d Цифра (0-9) /\d+/ найдет число
\w Буква, цифра или "_" /\w+/ найдет слово
\s Пробельный символ /\s+/ найдет пробелы
^ Начало строки /^Привет/
$ Конец строки /конец$/
[abc] Любой символ из набора /[aeiou]/ найдет гласную
(x|y) Логическое ИЛИ /(кот|пес)/

4. Решаем реальные задачи на Node.js

Рассмотрим три практические задачи, которые часто встречаются в разработке.

4.1 Валидация email

function validateEmail(email) {
    const regex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
    return regex.test(email);
}

console.log(validateEmail('test@domain                

Блоги

Рекомендаций по книгам