Визуальный генератор регулярных выражений

Все разработчики рано или поздно сталкиваются с регулярными выражениями. Практически в 100% случаев нам совершенно не нравится их составлять, считая это побочной работой, не связанной с программированием.

Большинство из нас, впервые столкнувшись с данной проблемой, начинают забивать в поисковых системах что-то типа: «regexp online generator» и к своему великому сожалению осознают что гугл сломался все результаты в поиске являются сервисами для проверки корректности уже составленного регулярного выражения (или я плохо гуглил).

А как же составить это самое регулярное выражение?


image

До недавнего времени существовало 2 ответа на этот вопрос:

  1. Изучить документацию по регулярным выражениям и составить регулярку самому
  2. Попросить кого-то более опытного сделать это за вас

Теперь, после нескольких месяцев разработки, рад представить и 3-й ответ:

» Генератор регулярных выражений

История


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

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

Но эта проблема его очень сильно зацепила и вот теперь, наконец, он рад представить вам плоды своих трудов.

Начнем


Для начала решил сделать веб-сервис. Хотелось сделать максимально просто (для более широкого круга людей), чтобы своё правило для валидации смогли составить не только программисты, но и люди которые далеки от программирования (модераторы/администраторы).

Вот сам интерфейс:



Как и ожидалось, новому пользователю вообще ничего непонятно и поэтому пришлось разработать вводный интерактивный курс:


Всегда выступаю против модальных окон и попапов, но в этом случае мне кажется их все же целособразно использовать. Можно назвать это «приветственным сообщением».

А вот и сам интерактивный курс, точнее его часть:



Также вы можете включить отображение отдельных подсказок вне зависимости пройдете ли вы вводный курс, либо откажитесь от него.

А что же насчет функционала?


Первое что бросается в глаза — это «Примеры» и сделано это неспроста. Для начала, я настоятельно рекоммендую выбрать наиболее близкий для вашей задачи пример. Вы можете просто переключиться между некорректным и корректным вариантом для более простого понимания примеров. Затем можете изменить выбранный вами пример так, как сами пожелаете. Со временем список примеров будет расширяться:


Далее идет то, ради чего это всё и затевалось — сгенерированное Регулярное Выражение:



Здесь хотелось бы немного остановиться и рассказать подробнее.

С самого начала мне хотелось создать инструмент не ограничивающий пользователей в создании многосложных регулярок и в то же время сделать интерфейс максимально простым. А на деле, сколько раз кардинально изменялся интерфейс я уже и со счета сбился. Также пришлось несколько раз переписывать часть логики самого генератора (ядро). И не потому что архитектура была плохо продумана, а из-за того что некоторые варианты просто не были учтены. А вариантов — огромное множество.

Еще хотелось бы рассказать о возможностях. На данный момент можно создавать регулярку с группами/подгруппами, определять опциональные части (не обязательные), указывать конкретные символы (у остальных будет определяться тип), указать тип — «любой символ» и блокировать определенные символы в конкретной части регулярки. Вы можете довольно просто создать регулярку не только для слова, но и для словосочетания и даже предложения. Доступна генерация регулярок как на латинице и так на кириллице (по отдельности и вместе). По мере добавления дополнительных локализаций интерфейса, планируется поддержка регулярок и для других письменностей.

Кстати, не пугайтесь что регулярное выражение всегда красного цвета. Это не символизирует ошибку, а сделано лишь для того, чтобы акцентировать ваше внимание на этой крайне важной информации.

Далее по порядку идет «Тестовое поле»

Здесь происходит проверка введенного тестового значения на соответствие сгенерированному регулярному выражению. И происходит она «на лету». Ничего нажимать не нужно. Тем самым вы можете гораздо быстрее и удобнее проверить множество вариантов.

Под полем ввода отображается описание автоматически сгенерированного правила.

Есть вариант с описанием правила в виде ошибки, когда введенное тестовое значение не соответствует сгенерированному правилу/регулярке:



На данном примере видно как срабатывает проверка на заблокированные символы:

  • "@" до второй "@";
  • "--" в любой части имени домена второго уровня;
  • "-" в самом конце домена второго уровня, непослредственно перед символом ".";

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

Также есть вариант с описанием правила в отдельном блоке, когда введенное тестовое значение соответствует сгенерированному правилу/регулярке:



Хотелось бы разъяснить значение цветов с частями правила:

  1. зеленый — правильно
  2. желтый — опционально
  3. красный — некорректно

Сгенерированное регулярное выражение может иметь не только обязательные части, но также и опциональные. Хочу также отметить, что автоматическое описание правила делалось именно для будущего плагина, но отлично показало себя и в данном веб-сервисе.

Ядро (UI)




Вот и наконец мы добрались до последнего блока по порядку, но не по значению. Я лично считаю этот блок — ядром всего сервиса. Именно здесь Генератор получает все необходимые входные данные, которые впоследствии обрабатывает и выдает уже готовый результат. Кстати, вся логика реализована только на клиенте. Веб сервис вообще не имеет серверного кода.

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

Здесь можно очень долго и нудно рассказывать что и как нужно вводить, но мне кажется это будет намного проще понять с помощью примеров, которых там довольно много. И вообще, материала с описанием как и что работает хватит еще на одну большую статью.

А ты не забыл сохраниться?


После того, как мы нажали кнопку «Генерировать», у нас сгенерировалось регулярное выражение. Теперь мы можем сохранить его. На всякий случай хочу уточнить что сохраняется оно только в памяти браузера (localstorage).

При нажатии на кнопку «Сохранить» появляется диалоговое окно:


Вы можете вручную ввести описание для правила или переключиться на автоматическое описание как в примере ниже. Также вам нужно ввести название для правила:


Этот функционал был разработан с расчетом на будущий плагин, но пригодился и в данном веб-сервисе.

На самом деле, как в случае с примерами так и с пользовательскими правилами, сохраняется не сгенерированное правило, а просто входные данные и каждый раз когда вы переключаете правило — срабатывает логика генератора. Это очень удобно при исправлении багов в логике самого генератора. Тем самым даже сохраненные правила будут работать с последней версией уже исправленного генератора.

Дополнительные возможности


Я расположил их по приоритету:

  1. Автоматическое сохранение данных в Url параметры. И происходит это сразу же после нажатия на кнопку «Генерировать», либо при переключении примеров или сохраненных правил. Вы можете скинуть кому-то ссылку и при открытии страницы другой пользователь увидит именно то, что вы вводили раннее. Это довольно удобно.

  2. Полная локализация всего контента. Существующие модули локализации мне сильно не нравились, поэтому ваш покорный слуга создал свой велосипед очень простой модуль. Всего десяток строк кода. Выбранный язык cчитывается из Url и записывается в Url, сохраняется в Localstorage. Особенно приятно добавлять новые языки, т.к. текст берется только из одного очень простого JSON файла для соответствующего языка. Отдал файлик переводчикам — получил еще один язык.

  3. Извещение о новой версии приложения. Данный веб-сервис — это одностраничное веб приложение (буквально). Из личного опыта знаю что пользователь может месяцами не перезагружать одностраничное приложение и это как раз правильно. Но что делать если вышла новая версия? Как известить об этом пользователя? — Очень просто. Был разработан модуль, который опрашивает сохраненный JSON файл с заданным интервалом времени и как только записанная новая версия не соответствует предыдущей — показывается вот такое извещение:



Технологии


Вот основной стек технологий с помощью которого удалось всё это реализовать:

  • TypeScript 2.0 + SystemJS
  • Angular 1.5 (с компонентами)
  • Angular-Material 1.x
  • IntroJS

Код написан в полном Angular 2 Code Style (даже с декораторами), что в будущем позволит очень просто мигрировать (жду только Material2).

Заключение


В дальнейших планах — сделать полноценный плагин, который позволит задавать правила валидации одновременно для клиента и для сервера прямо из интерфейса. Мне кажется это окажется очень удобным и практичным решением. Затем можно развить эту идею и создать даже «Visual Form Builder» на основе как-бы стандарта: «JSON Schema», с которым мне пришлось поработать в свое время.

Если вы захотите сделать что-то аналогичное, я буду только за и даже помогу советами. Считаю что: «Сама идея практически ничего не стоит, стоит ее непосредственная реализация».

В заключение, хочу позволить себе небольшое отступление. Если ты разработчик-мечтатель, как и автор статьи, который получает кайф от своей работы, особенно когда она бросает тебе вызов и хоть немного, но все же решает проблемы других людей, тогда ты скорее всего на правильном пути. Хуже, когда такому человеку приходится гнаться за деньгами, какими-то материальными благами, чтобы соответствовать непонятным социальным стандартам или выполнять скучную, глупую и рутинную работу чтобы просто прокормить себя, свою семью. Кажется не правильным жертвовать своими мечтами, идеями, стремлениями и временем в угоду простым бумажкам. Но в то же время автор статьи никого не побуждает прямо сейчас всё взять и бросить. Каждый должен сделать свой выбор сам и когда для этого наступит действительно подходящее время.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 63

    +5
    Хоть вы и старались упростить интерфейс всё равно получилась КДПВ из поста.
    Неподготовленному пользователю данный интерфейс никак не поможет, а подготовленному он и не нужен.
    Да и не совсем я понимаю пользу от валидации без замены…
      +1
      Простой интерфейс — это была моя самая большая боль. Пробовал разные варианты, но на данный это максимум что я смог получить.

      Если у кого есть предложения по упрощению, тогда только рад буду данной информации.

      P.S. пожалуйста, только не предлагайте пределать в простой tester, т.к. цель именно не в ручном в создании регулярки.
        +1
        Программирование мышкой состоит всегда из двух этапов — нащелкивание мышкой / ввод с клавиатуры и отображение результата.
        В вашем случае по центру должно быть поле, где юзер нащелкивает мышкой/вводит параметры регулярки, а под ним — текст с получившейся регуляркой. Ну и где-нибудь спрятаны опции всякие разные, за раскрывающимся блоком.
      +5
      Выглядит красиво, но я не смог разобраться как там составить простейшую регулярку, при том что неплохо умею писать их вручную. Хотел бы я посмотреть на обычного юзера который там разберётся.

      P.S. обычный юзер вообще не знает что такое Regex, и после того как что-то нащёлкает там — не сможет оценить правильность того что он получил.
      • НЛО прилетело и опубликовало эту надпись здесь
        +10
        Ох я не завидую программистам, которым потом поддерживать эти user-generated регулярки…
          +3
          Как уже написали выше, сложность изучения регулярных выражений сопоставима со сложностью вашего интерфейса (если не ниже). Поэтому везде находятся сервисы для проверки и объяснения уже составленных выражений, потому что они позволяют неискушенному пользователю визуально понять, что нужно сделать, что он сделал так, а что не так. Ради интереса, возьмите любого неподготовленного пользователя, выдайте ему в зубы задачу (например выделить в произвольном тексте email) и сайт вроде https://regex101.com/. Я уверен, что пользователь разберется с регэкспами (по-крайней мере на базовым уровне) быстрее, чем с вашим интерфейсом.
            +1
            О части я с вами согласен.

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

            Как я писал выше, первая проблема, встающая перед новичком — это: «А как вообще создать регулярку и как создать ее рабочей?». И тут он может немного сэкономить. Согласитесь, что на примерах всегда проще и быстрее учиться.

            Особенно это актуально, когда просто нету на это целого «вагона» времени.

            Для опытных разработчиков картина полностью противоположная. Мне и самому легче вручную составлять регулярки чем вводить примеры.
              0

              Примеры вот только у вас плохому учат.

                0
                Исправим.
                0
                На мой взгляд, для начинающих и продолжающих гораздо полезнее будут программы типа https://www.regexbuddy.com/

                «А как вообще создать регулярку и как создать ее рабочей?».
                Правильный ответ — найти статью, объясняющую основы регулярных выражений, после усвоения которой продолжать тренироваться и курить мануалы.
                  –1
                  Простите. Но следуя вашей логике, все мы должны еще программировать на Ассемблере и писать код не в IDE, а в консоли.

                  Я серьезно.
                  Зачем нам высокоуровневые абстракции?
                  Зачем нам GUI, если есть консоль?
                  Зачем что-то вообще автоматизировать/улучшать/облегчать?
                  Зачем вообще прогресс?
                    0
                    Не очень понятно, как из моего «стоит знать инструмент, который используешь» получилось ваше «долой прогресс».

                    Программист, который рассчитывает не на собственные знания, а на онлайн-сервис, который сгенерирует регулярное выражение за него, очень рискует. Сервис рано или поздно прекратит существование и такой программист останется у разбитого корыта с, теперь бесполезными, знаниями интерфейса этого сервиса.
                      0
                      «Не истери!» — Сказал бы мой знакомый…

                      Сколько фронтендеров приходит собеседоваться которые умеют jQuery, но не умеют Vanilla JS. Люди изучают фреймворки не изучая основы, а потом жалуются на то, что всё тормозит и ускорить приложение нельзя.

                      Инструментами для ускорения разработки пользоваться определённо надо. Главное чтобы эти инструменты не мешали работе приложения.

                      Это я к тому что надо знать основы, чтобы знать что и почему происходит. И знать где подкрутить чтобы всё начало летать, а не ползать. Это вам скажет любой разработчик highload сервиса. А регулярки частенько бывают причиной тормозов. Достаточно вспомнить wordpress(хотя не знаю что у них сейчас там, но раньше был регулярный ад).
                0
                Продуманно не правильно. Зачем вообще нужны регулярки? Чтобы выдернуть из строки/текста некие данные.
                Значит и «Автогенератор» надо было делать примерно так:
                1. Искомая строка
                2. Массив данных, которые мы бы хотели выдрать

                Тоесть:
                1. Имя Фамилия Отчество
                2. Фамилия
                Regex: [а-ЯёЁ]+\s+([а-ЯёЁ]+)\s+[а-ЯёЁ]+\s+
                (Или просто "([а-ЯёЁ]+)" и забирать второй элемент из результата)
                  +1
                  Нет. Эти регулярки работают со строками/текстом, которые приходят нам от пользователя. Не важно на клиенте это или на сервере. Наша задача — проверить что введенные данные действительно соответствуют нашим ожиданиям (регулярке).
                  • НЛО прилетело и опубликовало эту надпись здесь
                    +5
                    С такими генераторами очень легко получить такую ситуацию.
                      0

                      Да, а ещё: бывают фамилии, начинающиеся со строчной, фамилии содержащие пробел, содержащие дефис, апостроф, и т.д.

                      +4
                      >Практически в 100% случаев нам совершенно не нравится их составлять

                      Практически в 100% случаев программистам нравится составлять регулярки.
                      А вот красивости программистам не нужны. Достаточно консоли
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          К автору поста вопросов нет?
                          • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              То есть, когда автор поста говорит «Практически в 100% случаев нам совершенно не нравится их составлять», то вопросов к нему нет, а ко мне есть? Оооокей.
                              Будь более последовательным и логичным в своих рассуждениях, падаван.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                • НЛО прилетело и опубликовало эту надпись здесь
                            +1
                            А я поддерживаю. Кайф от использования regex в Perl трудно описать человеческим языком.
                        • НЛО прилетело и опубликовало эту надпись здесь
                            +1
                            Понял свою ошибку. Только холиваров не надо!
                            • НЛО прилетело и опубликовало эту надпись здесь
                                0
                                Такой сервис будет очень полезен аналитикам, которые работают с Enterprise платформами анализа данных. Они не программисты, регулярки писать не умеют, но им надо. Отправил ссылку на сервис нашим.
                                  0
                                  Как и писал в статье, именно от таких сотрудников и пришел первоначальный запрос на подобный функционал.
                                  0
                                  > Я просто пытался понять, кому может реально пригодится ваш сервис.

                                  Вообще говоря, любым людям, которым иногда надо писать регулярки. В таких случаях синтаксис за пределами базового обычно не запоминается, и, чтобы каждый раз не лезть в справочник, удобно иметь генератор (если он удобный :)).
                                +2
                                Но… Разработчики! Поднимите руку, кто считает, что работа с регулярками — побочная и не связана с программированием?

                                Как пользователь Linux могу сказать что чаще использую регулярки в делах не связанных с программированием.
                                Для форматирования/обрезания выхлопа консольных утилит, например.

                                Кроме того многие редакторы/IDE умеют поиск/замену по регуляркам, при этом подсвечивают куски текста и даже показывают результат будущей замены в подсказке. Что очень удобно.

                                И да, мне нравятся регулярки :)
                                0
                                Удобство интерфейса для пользователя хотелось бы получше, а то слишком много всего.
                                Кстати, в примерах неверное регулярное выражение для IP адреса: числа не могут превышать 255.
                                  0
                                  Про интерефейс полностью согласен. Надеюсь на большое число конструктивных отзывов.
                                  IP — спасибо, пропустил.
                                  +1
                                  Круто! Только хорошо было бы положить исходники на github, чтоб можно было всегда развернуть в своей сети.
                                  А то веб сервисы бывает перестают существовать через некоторое время. Да и можно будет делать пулл-реквесты с улучшениями.

                                  И еще хак — если там все на JS, то можно кажись на гитхабе создать статичный сайт, он будет вечный)
                                    0
                                    https://uiregex.firebaseapp.com/ru — настоящий урл сервиса. Тоже «вечный» и бесплатный. А тот короткий — просто зеркало.

                                    На гитхабе хостинг одностраничных приложений на порядок хуже чем в Firebase (нет html5Mode, настроек кэширования файлов, редиректов ...)
                                      0
                                      Giок, по сайту супер. По исходниками вопрос открыт)
                                        0
                                        Пока не спешу открывать исходники. Возможно позже, когда выйдет версия 2.0
                                    0
                                    На правах зануды:

                                    Как водится, пример регулярки для email — неправильный.
                                    Контрпримеры:
                                    • user@192.168.1.1
                                    • konishiwa+hello@world.co.uk
                                      –2
                                      Да. Эти варианты в примере скорее всего будут полезны. Добавлю, спасибо.

                                      Знаю что есть еще вариант доменов на кириллице или других письменностях, но указывать их все в примере — это уже перебор.
                                        +1
                                        user@192.168.1.1
                                        konishiwa+hello@world.co.uk

                                        В RegExr, про который ниже писал, пример валидации выглядит так:
                                        /^(?:(?:[\w`~!#$%^&*\-=+;:{}'|,?\/]+(?:(?:\.(?:"(?:\\?[\w`~!#$%^&*\-=+;:{}'|,?\/\.()<>\[\] @]|\\"|\\\\)*"|[\w`~!#$%^&*\-=+;:{}'|,?\/]+))*\.[\w`~!#$%^&*\-=+;:{}'|,?\/]+)?)|(?:"(?:\\?[\w`~!#$%^&*\-=+;:{}'|,?\/\.()<>\[\] @]|\\"|\\\\)+"))@(?:[a-zA-Z\d\-]+(?:\.[a-zA-Z\d\-]+)*|\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])$/
                                        

                                        :)

                                        Написано что валидирует все примеры из вики, кроме вариантов с IPv6.
                                          +1
                                            0
                                            Меня \d{1,3} не устравивает для валидации ип адресов. Потому что 456.23.892.21 попадает под эту регулярку.

                                            Я использую "(?<![0-9])(?:(?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(?![0-9])"

                                          +2
                                          Я не совсем понял, как именно вы упростили интерфейс, но… в тренинг центре нашей компании я подготовил небольшой курс по регуляркам и прочитал его студентам уже несколько раз.
                                          А на вашем сайте я не смог составить простейшую регулярку с бэкреференсом, потратив целых 5 минут…
                                            +1
                                            Я мог бы быть целевой аудиторией. Потому что регулярные выражения использую достаточно редко, чтобы успеть забыть синтаксис, и потому каждый раз вынужден перечитывать документацию. Но. Во-первых, как уже сказали — интерфейс нисколько не интуитивен. Мне проще каждый раз перечитать документацию по регэкспам, чем каждый раз перечитать инструкцию к подобному сервису. Да и полезнее пожалуй, может со временем запомнится. Во-вторых — проверка валидации — только одна из задач, решаемых с помощью регэкспов, что делает использование этого инструмента ещё более неоправданным.
                                            Так что я в смятении — с одной стороны, я благодарен даже за попытку облегчить жизнь таким людям как я, с другой — облегчения как-то не наступило(
                                              0
                                              Зависает крипт на странице при попытке входа на нее. Вешается весь браузер. Firefox 33.
                                                0
                                                Есть такая полезная штука как awesome lists — сборник всяких полезностей и туториалов. Вот там, кроме уже упомянутого RegEx101, нашел еще RegExr — с блэкджеком и ... примерами, хинтами и «выбором сообщества».
                                                Есть еще RegExpBuilder, очень похоже на то что описано в посте, только библиотека для JS.

                                                Может кому пригодится.
                                                  0
                                                  Простите. Но сравнивать Генератор с тестером — это как сравнивать программиста с тестировщиком.

                                                  Не спорю, тестировщики у нас с огромным опытом работы из-за этого ценятся они у нас они очень высоко.
                                                  Но что что конкретно они создают? Что они будут тестировать, если у нас не будет ни одного программиста, даже самого молодого, которой только начал работать?
                                                  Да, программист только начал свою работу. Он еще не опытен, еще не всё умеет делать, допускает ошибки, но в перспективе его ценность гораздо выше любого тестеровщика, даже самого продвинутого.

                                                  Надеюсь теперь, наконец, станет понятна та мысль, которую я хотел донести с самого начала.
                                                  –2
                                                  На мой взгляд, идеальный визуальный генератор должен выглядеть так:
                                                  Пользователь выделяет часть текста и генератор показывает ему выражение для такого выделения с опциями длины групп и наборов символов.
                                                    0
                                                    К сожалению, не сработает.
                                                    Как в таком редакторе указать, что длина должна быть четной?
                                                    Первая версия регулярного выражения будет либо слишком ограниченной и тогда придется добавлять множество вариантов граничных случаев.
                                                    Либо она будет слишком широкой, и граничные случаи придется отсекать.
                                                    При таких итерациях формула будет переходить от одного состояния ко второму.
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                        0
                                                        Ну это само собой, как без этого, кому нужны регулярки вида \w+. А ещё что-бы предлагал на выбор не одно, а несколько возможный регулярных выражений. И конечно выделение другого блока текста чтобы модифицировало выражение с учетом всех раннее выделенных.
                                                      0
                                                      Прочитал руководство, не могу понять самого главного: как все-таки написать регекс средствами вашего приложения? Пока могу только pcre-строкой занести…
                                                        0
                                                        Для работы, если это не точное правило, нужны как минимум примеры с «пограничными» значениями. Например, это могут быть строки минимальной и максимальной длины,…

                                                        Чем больше будет примеров для того, что вы действительно хотите провалидировать — тем лучше будет результат (в теории).
                                                        0
                                                        Здравствуйте. Идея очень интересная.

                                                        Мне иногда (как уже писали выше, достаточно редко, что к следующему разу успеваю забыть, как это делается) бывает нужно пропустить какой-нибудь конфигурационный файл через grep, чтобы отфильтровать комментарии (строки, начинающиеся с "#") и вывести только значащие строки. Это сильно упрощает поиск параметров среди обилия комментариев. Подскажите пожалуйста, как составить такую регулярку с помощью вашего сервиса.
                                                          0
                                                          По некоторым комментариям, уже понял свое упущение.

                                                          Сейчас работает только режим валидации. Нужно будет добавить еще несколько режимов работы. Чуть позже добавлю еще возможность фильтрации тестовых данных на основе сгенерированной регулярки.
                                                            0
                                                            бывает нужно пропустить какой-нибудь конфигурационный файл через grep, чтобы отфильтровать комментарии

                                                            cat /path/to/file | grep -v '#'
                                                            

                                                            или
                                                            cat /path/to/file | grep -v '^#'
                                                            
                                                            0
                                                            Очень хороший сервис есть http://txt2re.com/ Выручал много раз!!! Причем сразу регулярку переводит в программный код.
                                                              0
                                                              Посмотрел. Довольно интересное они выбрали решение и в отличие от предыдущих комментариев — это действительно Генератор.
                                                              Мне кажется именно об этом и писал alexeyw в своем первом комментарии.
                                                              0
                                                              в общем-то круто, только сделайте генерацию, плиз, чуток поумнее :)

                                                              eEe.mail@google.com
                                                              /^[a-z]{1}[A-Z]{1}[a-z]{1}[.]{1}[a-z]{4}[@]{1}[a-z]{6}[.]{1}[a-z]{3}$/


                                                              т.е. фактически это не сработает для
                                                              eee.mail@google.com
                                                              eE.mail@google.com
                                                              и т.д…

                                                              было бы не плохо увидеть хотя бы так (заменил [a-zA-Z]):
                                                              /^[a-zA-Z]+[.]{1}[a-z]{4}[@]{1}[a-z]{6}[.]{1}[a-z]{3}$/

                                                              ну так далее…

                                                              регулярка в общем-то нужна, чтоб находить вариации в тексте, если находить только точные совпадения, то нафига регулярка тогда вообще нужна…
                                                                0
                                                                От данного сервиса легче их составлять не стало, к сожалению.

                                                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                Самое читаемое