Skip to content
DocsAll
技巧

Регулярные выражения на практике: частые случаи обработки текста

Timi Tian · Опубликовано 24 марта 2026 · Обновлено 12 июля 2026
Регулярное выражениеRegexОбработка текста

Три главных практических случая regex

На практике regex сводится к трем типам операций:

  • Проверка: определить, соответствует ли текст формату (например, email, телефон)
  • Извлечение: найти в тексте то, что подходит под шаблон (например, все URL, все суммы)
  • Замена: заменить часть, подходящую под шаблон, на другую (например, унифицировать формат даты, маскировать телефон)

Ниже — разбор реальных случаев.

Случаи проверки

Проверить номер телефона

Regex: ^1[3-9]\d{9}$

Совет: используйте ^ и $ для привязки начала и конца, чтобы вся строка была номером телефона, а не более длинным текстом, его содержащим. Вторая цифра ограничена 3~9 по текущим правилам диапазонов.

Проверить email

Regex: ^[\w.-]+@[\w.-]+.\w+$

Совет: упрощенной версии достаточно; строгая regex для email крайне сложна. В реальных проектах используйте упрощенную версию + отправку проверочного письма как двойную гарантию.

Проверить удостоверение личности

Regex: ^\d{17}[\dXx]$

Совет: 18 знаков, первые 17 — цифры, последний — цифра или X. Эта regex проверяет только формат, не контрольный разряд.

Проверить URL

Regex: ^https?://[\w.-]+

Совет: начинается с http или https, затем домен. Упрощенная версия; полная regex для URL крайне сложна.

Случаи извлечения

Извлечь все номера телефонов

Regex: 1[3-9]\d{9}

Без ^ и $ находит все номера телефонов в тексте. Используйте глобальный поиск (флаг g).

Извлечь все URL

Regex: https?://[\w./?=&%-]+

Соответствует URL, начинающимся с http(s). Реальные символы URL сложнее; корректируйте набор символов по необходимости.

Извлечь все суммы

Regex: [¥$]\d+(?:.\d+)?

Соответствует суммам, начинающимся с ¥ или $, с необязательной дробной частью. Например: ¥100, $99.9.

Извлечь содержимое HTML-тегов

Regex: <a[^>]*>([^<]+)

Извлекает текст внутри тега a. Группа в скобках захватывает текстовое содержимое. Учтите, что regex для обработки HTML недостаточно надежен; для сложного HTML стабильнее использовать парсер.

Случаи замены

Маскировка телефона

Заменить 4 средние цифры на звездочки: 1[3-9]\d{9} заменить, сохранив первые 3 и последние 4.

На практике используйте группы захвата: regex (1[3-9]\d)\d{4}(\d{4}), заменить на 1\1****\2. \1 и \2 ссылаются на группы.

Унифицировать формат даты

Преобразовать 2026/07/12 в 2026-07-12: regex (\d{4})/(\d{2})/(\d{2}), заменить на \1-\2-\3.

Удалить лишние пробелы

Несколько идущих подряд пробелов превратить в один: regex \s+, заменить на одиночный пробел.

Удалить HTML-теги

Убрать все HTML-теги, оставив только текст: regex <[^>]+>, заменить на пусто. Учтите, что символ > внутри атрибутов тега может быть потерян; в сложных случаях используйте парсер.

Советы по отладке

Проверяйте шаг за шагом в инструменте тестирования

Используйте инструмент тестирования regex:

  1. Введите regex
  2. Введите тестовый текст (с примерами, которые должны и не должны совпадать)
  3. Посмотрите подсвеченные результаты
  4. Пошагово корректируйте regex, пока результат не станет верным

Сначала совпадение, потом оптимизация

Сначала напишите regex, который совпадает; затем думайте об оптимизации (производительность, точность). Не гонитесь за идеалом с самого начала.

Используйте онлайн-визуализацию regex

Сложный regex разбивайте визуализатором, чтобы понять смысл каждой части.

Учитывайте граничные случаи

  • Пустая строка
  • Строки с частичным совпадением
  • Строки со специальными символами
  • Очень длинные строки

Переиспользуемые шаблоны regex

Китайские символы

[\u4e00-\u9fa5]+

Почтовый индекс

^\d{6}$

Номер QQ

^[1-9]\d{4,10}$

Шестнадцатеричный цвет

^#[0-9a-fA-F]{6}$

Номер версии

^\d+.\d+.\d+$

Частые ловушки

Жадное сопоставление

.* захватывает слишком много. Для извлечения содержимого тегов используйте [^<]+ вместо .*, чтобы не захватывать между тегами.

Спецсимволы без экранирования

Сопоставление метасимволов — точки, звездочки, вопросительного знака — требует экранирования. Чтобы сопоставить саму обратную косую черту, пишите \.

Сопоставление между строками

По умолчанию . не соответствует переносам строки. Для многострочного текста включите single-line режим или используйте [\s\S] для сопоставления любого символа.

Проблемы производительности

Catastrophic backtracking (катастрофический возврат): вложенные квантификаторы вроде (a+)+ на некоторых входах крайне медленны. В сложном regex следите за производительностью; для слишком длинного текста сначала обрежьте, потом сопоставляйте.

Итог

Практика regex делится на проверку, извлечение и замену. Проверка использует привязку ^ и $, извлечение — глобальный поиск, замена — ссылки на группы захвата. Сначала проверяйте regex инструментом, затем оптимизируйте. Запомните несколько частых шаблонов (телефон, email, дата, URL) — этого хватит на каждый день. Инструмент тестирования regex от DocsAll работает в браузере: пишете и сразу проверяете, текст не загружается.

T
Timi Tian 创始人 / 全栈工程师

DocsAll 创始人,10 年全栈开发经验,专注浏览器端文档处理技术与隐私保护架构。前新加坡科技公司技术负责人。

Похожие статьи

技巧

Регулярные выражения на практике: шпаргалка по частым шаблонам и советы

Сборник часто используемых шаблонов регулярных выражений (проверка, извлечение, замена), с советами по отладке и шпаргалкой по метасимволам, чтобы помочь вам быстро освоить обработку текста.

11 июля 2026 Читать →
技巧

Приёмы извлечения страниц PDF: точно выбирайте нужные страницы

Подводит итог по нескольким подходам к извлечению страниц PDF, включая извлечение одной страницы, непрерывные диапазоны, дискретные номера и извлечение между файлами, с приёмами и частыми ошибками.

9 июля 2026 Читать →