Что такое регулярное выражение?

Регулярное выражение (regex) — это последовательность символов, определяющая шаблон поиска. Изначально разработанные в рамках теории формальных языков, регулярные выражения сегодня используются практически в каждом языке программирования и инструменте обработки текста для поиска, сопоставления и манипуляции со string'ами. Шаблон вида [a-z]+@[a-z]+\.com описывает структуру простого адреса электронной почты — буквы, за которыми следует символ @, ещё буквы, точка и строка "com".

Помимо поиска, регулярные выражения могут служить основой для генерации данных. Обращая процесс сопоставления, regex-движок способен создавать случайные string'и, соответствующие заданному шаблону. Это особенно полезно при тестировании программного обеспечения, прототипировании и наполнении баз данных реалистичными тестовыми данными без использования реальной информации о пользователях.

Описание инструмента

Этот инструмент генерирует случайные string'и, соответствующие любому указанному вами регулярному выражению. Введите regex-шаблон — или выберите один из встроенных пресетов — и мгновенно получите до 1 000 подходящих значений. Инструмент поддерживает весь стандартный синтаксис regex, включая классы символов, квантификаторы, группы, чередование и обратные ссылки. Результат можно использовать напрямую в качестве тестовых данных, начального набора данных или входных данных для скриптов валидации.

Возможности

  • Встроенные пресеты для распространённых форматов: email, IPv4, UUID, номер телефона США, дата, hex-цвет, номерной знак и MAC-адрес
  • Ввод произвольного regex с поддержкой полного синтаксиса регулярных выражений JavaScript
  • Настраиваемое количество от 1 до 1 000 генерируемых значений за один запуск
  • Ограничение максимального повторения для контроля количества раскрытий неограниченных квантификаторов (+, *, {n,}), предотвращающее генерацию чрезмерно длинных string'ов
  • Режим уникальных значений, который удаляет дубликаты из результата и предупреждает, если энтропия шаблона слишком мала для получения достаточного количества уникальных значений

Сценарии использования

  • Тестирование программного обеспечения: генерируйте сотни правдоподобных email-адресов, UUID или IP-адресов для использования в качестве тестовых данных или начального набора данных в автоматизированных тестах без раскрытия реальной информации о пользователях.
  • Наполнение базы данных: быстро заполняйте базы данных разработки или промежуточной среды реалистичными тестовыми данными, соответствующими ограничениям столбцов и правилам валидации.
  • Изучение regex: экспериментируйте с синтаксисом регулярных выражений — напишите шаблон и сразу увидите, какие string'и он может порождать. Это помогает лучше понять квантификаторы, классы символов и группировку.

Описание параметров

Параметр Описание
Пресет Выберите встроенный шаблон для распространённых форматов данных или выберите «Произвольный», чтобы написать собственный regex. При выборе пресета поле regex-шаблона заполняется автоматически.
Regex-шаблон Регулярное выражение, используемое для генерации данных. Поддерживает классы символов ([a-z]), квантификаторы ({3,8}, +, *), группы и чередование ((com|net|org)), а также специальные token'ы (\d, \w).
Количество Количество генерируемых string'ов — от 1 до 1 000.
Максимальное повторение Ограничивает раскрытие неограниченных квантификаторов. Например, при максимальном повторении 10 шаблон [a-z]+ будет создавать string'и длиной не более 10 символов. Диапазон: 1–100.
Только уникальные значения При включении гарантирует отсутствие дублирующихся string'ов в результате. Если шаблон не может породить достаточное количество уникальных значений, отображается предупреждение с фактическим числом сгенерированных значений.

Советы

  • Начните с пресета и модифицируйте его, чтобы понять, как regex-шаблоны преобразуются в генерируемые данные.
  • Если вам нужен вывод фиксированной длины, используйте точные квантификаторы, например {8}, вместо диапазонов вида {5,10}.
  • Уменьшайте значение максимального повторения при использовании + или *, чтобы генерируемые string'и оставались короткими и читаемыми.
  • Включайте режим уникальных значений при генерации идентификаторов или ключей, которые не должны повторяться, но используйте шаблон с достаточным разнообразием, чтобы не достичь предела уникальности.

Часто задаваемые вопросы

Поддерживаются ли опережающие и ретроспективные проверки (lookahead/lookbehind)? Генератор основан на библиотеке randexp.js, которая поддерживает большинство возможностей regex в JavaScript. Опережающие и ретроспективные проверки не поддерживаются при генерации, поскольку они не определяют содержимое символов.

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

Является ли результат по-настоящему случайным? Результат является псевдослучайным. Каждый запуск даёт разные результаты, однако используемая случайность не является криптографически стойкой. Не используйте этот инструмент для генерации паролей или security token'ов.