JavaScript & TypeScriptМодуль 3: Строки и числа
Регулярные выражения
Поиск и замена текста по шаблону
Цель урока
В этом уроке ты научишься:
- Создавать регулярные выражения
- Искать и заменять текст по шаблону
- Использовать основные паттерны
Создание RegExp
// Литерал (рекомендуется)
let regex1 = /hello/;
// Конструктор (для динамических паттернов)
let regex2 = new RegExp("hello");
// С флагами
let regex3 = /hello/gi;
let regex4 = new RegExp("hello", "gi");Флаги
| Флаг | Значение |
|---|---|
g | Глобальный поиск (все совпадения) |
i | Без учёта регистра |
m | Многострочный режим |
let text = "Hello, hello, HELLO";
console.log(text.match(/hello/)); // ["hello"]
console.log(text.match(/hello/g)); // ["hello"]
console.log(text.match(/hello/gi)); // ["Hello", "hello", "HELLO"]Методы
test — проверка
let regex = /hello/i;
console.log(regex.test("Hello, world!")); // true
console.log(regex.test("Hi there!")); // falsematch — поиск
let text = "Телефон: 123-456-7890";
console.log(text.match(/\d+/)); // ["123"]
console.log(text.match(/\d+/g)); // ["123", "456", "7890"]replace — замена
let text = "Привет, мир!";
console.log(text.replace(/мир/, "друг")); // "Привет, друг!"
console.log(text.replace(/и/g, "!")); // "Пр!вет, м!р!"split — разбиение
let text = "яблоко, банан; апельсин";
console.log(text.split(/[,;]\s*/)); // ["яблоко", "банан", "апельсин"]Специальные символы
Символьные классы
| Символ | Значение |
|---|---|
\d | Цифра (0-9) |
\D | Не цифра |
\w | Буква, цифра, _ |
\W | Не буква/цифра/_ |
\s | Пробельный символ |
\S | Не пробельный |
. | Любой символ |
let text = "Код: A1B2C3";
console.log(text.match(/\d/g)); // ["1", "2", "3"]
console.log(text.match(/\w+/g)); // ["Код", "A1B2C3"]Квантификаторы
| Символ | Значение |
|---|---|
+ | 1 или более |
* | 0 или более |
? | 0 или 1 |
{n} | Ровно n раз |
{n,} | n или более |
{n,m} | От n до m |
let text = "Gooooogle";
console.log(text.match(/o+/)); // ["ooooo"]
console.log(text.match(/o{2}/)); // ["oo"]
console.log(text.match(/o{2,4}/)); // ["oooo"]Позиция
| Символ | Значение |
|---|---|
^ | Начало строки |
$ | Конец строки |
\b | Граница слова |
let text = "Hello World";
console.log(/^Hello/.test(text)); // true
console.log(/World$/.test(text)); // true
console.log(/\bWorld\b/.test(text)); // trueГруппы и альтернативы
Группы ()
let text = "2024-01-15";
let match = text.match(/(\d{4})-(\d{2})-(\d{2})/);
console.log(match[0]); // "2024-01-15"
console.log(match[1]); // "2024"
console.log(match[2]); // "01"
console.log(match[3]); // "15"Альтернатива |
let text = "У меня есть кот и собака";
console.log(text.match(/кот|собака/g)); // ["кот", "собака"]Символьный класс []
let text = "a1b2c3";
console.log(text.match(/[abc]/g)); // ["a", "b", "c"]
console.log(text.match(/[a-z]/g)); // ["a", "b", "c"]
console.log(text.match(/[^0-9]/g)); // ["a", "b", "c"] (не цифры)Практические примеры
Валидация email
function isValidEmail(email) {
let regex = /^[\w.-]+@[\w.-]+\.\w{2,}$/;
return regex.test(email);
}
console.log(isValidEmail("user@example.com")); // true
console.log(isValidEmail("invalid-email")); // falseВалидация телефона
function isValidPhone(phone) {
let regex = /^\+7\d{10}$/;
return regex.test(phone);
}
console.log(isValidPhone("+79001234567")); // true
console.log(isValidPhone("89001234567")); // falseИзвлечение данных
let text = "Цена: 1500 руб., скидка: 200 руб.";
let prices = text.match(/\d+/g);
console.log(prices); // ["1500", "200"]Форматирование
let phone = "79001234567";
let formatted = phone.replace(/(\d)(\d{3})(\d{3})(\d{2})(\d{2})/, "+$1 ($2) $3-$4-$5");
console.log(formatted); // "+7 (900) 123-45-67"Практика
Задание 1: Проверка пароля
Задача: Проверь, что пароль содержит минимум 8 символов, цифру и букву.
Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
true
Задание 2: Извлечение хэштегов
Задача: Найди все хэштеги в тексте.
Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
["#мир","#javascript","#программирование"]
Задание 3: Замена
Задача: Замени все числа на "X".
Запустите код для проверки
Loading...
Ваш вывод:
Ожидаемый результат:
Код: X, пароль: X
Проверь себя
- Что означает флаг
g? - Чем
\dотличается от\D? - Как найти все совпадения в строке?