Регулярные выражения (regex) — это мощный инструмент для работы с текстом в JavaScript. Они позволяют эффективно искать, заменять и валидировать строки по определенным шаблонам. В этой статье мы рассмотрим основы создания и использования регулярных выражений в JavaScript, а также разберем практические примеры их применения.
Создание регулярных выражений
В JavaScript существует два способа создания регулярных выражений:
- Литеральная нотация:
const regex = /pattern/flags;
- Конструктор RegExp:
const regex = new RegExp('pattern', 'flags');
Пример:
const literalRegex = /hello/i;
const constructorRegex = new RegExp('hello', 'i');
Основные методы для работы с регулярными выражениями
- test() — проверяет наличие совпадения в строке:
const regex = /hello/i;
console.log(regex.test('Hello, world!')); // true
- exec() — ищет совпадение и возвращает информацию о нем:
const regex = /(\d{2})-(\d{2})-(\d{4})/;
const result = regex.exec('Дата: 25-12-2023');
console.log(result); // ['25-12-2023', '25', '12', '2023']
- match() — возвращает массив совпадений:
const str = 'The quick brown fox jumps over the lazy dog';
const regex = /[aeiou]/gi;
console.log(str.match(regex)); // ['e', 'u', 'i', 'o', 'o', 'u', 'o', 'e', 'e', 'a', 'o']
Специальные символы в регулярных выражениях
- . — любой символ, кроме новой строки
- ^ — начало строки
- $ — конец строки
- \d — цифра
- \w — буква, цифра или подчеркивание
- \s — пробельный символ
Пример использования:
const emailRegex = /^\w+@\w+\.\w{2,3}$/;
console.log(emailRegex.test('user@example.com')); // true
console.log(emailRegex.test('invalid.email')); // false
Квантификаторы
- * — 0 или более повторений
- + — 1 или более повторений
- ? — 0 или 1 повторение
- {n} — ровно n повторений
- {n,} — n или более повторений
- {n,m} — от n до m повторений
Пример:
const phoneRegex = /^\+7\s?\(\d{3}\)\s?\d{3}-\d{2}-\d{2}$/;
console.log(phoneRegex.test('+7 (999) 123-45-67')); // true
console.log(phoneRegex.test('+7(999)123-45-67')); // true
Практические примеры использования регулярных выражений
- Валидация пароля:
function isStrongPassword(password) {
const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
return regex.test(password);
}
console.log(isStrongPassword('Weak123!')); // true
console.log(isStrongPassword('weakpassword')); // false
- Извлечение URL из текста:
function extractUrls(text) {
const urlRegex = /https?:\/\/[^\s]+/g;
return text.match(urlRegex) || [];
}
const text = 'Посетите наш сайт https://example.com или http://another-site.org';
console.log(extractUrls(text));
// ['https://example.com', 'http://another-site.org']
- Замена HTML-тегов:
function stripHtmlTags(html) {
return html.replace(/<[^>]*>/g, '');
}
const html = 'Это важный текст
';
console.log(stripHtmlTags(html)); // 'Это важный текст'
Регулярные выражения — мощный инструмент в арсенале JavaScript-разработчика. Они позволяют эффективно решать широкий спектр задач, связанных с обработкой текста, от простой валидации до сложного парсинга данных.
Однако важно помнить, что сложные регулярные выражения могут быть трудны для чтения и поддержки. Старайтесь разбивать сложные выражения на более простые части и комментировать их для лучшего понимания.
Практикуйтесь в создании и использовании регулярных выражений, экспериментируйте с различными шаблонами и методами. С опытом вы сможете эффективно применять этот инструмент для решения разнообразных задач в своих проектах.
Не забывайте также о производительности: слишком сложные регулярные выражения могут негативно влиять на скорость работы вашего приложения. В таких случаях рассмотрите возможность использования альтернативных методов обработки текста или оптимизации ваших регулярных выражений.




