Онлайн регулярные выражения js: regex101: Account Page
Содержание
Визуальный генератор регулярных выражений / Хабр
Все разработчики рано или поздно сталкиваются с регулярными выражениями. Практически в 100% случаев нам совершенно не нравится их составлять, считая это побочной работой, не связанной с программированием.
Большинство из нас, впервые столкнувшись с данной проблемой, начинают забивать в поисковых системах что-то типа: «regexp online generator» и к своему великому сожалению осознают что гугл сломался все результаты в поиске являются сервисами для проверки корректности уже составленного регулярного выражения (или я плохо гуглил).
А как же составить это самое регулярное выражение?
До недавнего времени существовало 2 ответа на этот вопрос:
- Изучить документацию по регулярным выражениям и составить регулярку самому
- Попросить кого-то более опытного сделать это за вас
Теперь, после нескольких месяцев разработки, рад представить и 3-й ответ:
» Генератор регулярных выражений
История
Давным давно, в одном проекте пришел довольно интересный и сложный запрос от внутренних пользователей. Персоналу технической поддержки нужно было самим задавать правила валидации для определенных полей, разным пользователям. Правила должны были часто и очень оперативно изменяться.
Как и любой хороший разработчик, ваш покорный слуга естественно начал с поиска уже готовых решений. Ничего подходящего не нашлось и пришлось приступить к очень примитивной реализации. На сложную, как обычно, не было ни средств ни времени.
Но эта проблема его очень сильно зацепила и вот теперь, наконец, он рад представить вам плоды своих трудов.
Начнем
Для начала решил сделать веб-сервис. Хотелось сделать максимально просто (для более широкого круга людей), чтобы своё правило для валидации смогли составить не только программисты, но и люди которые далеки от программирования (модераторы/администраторы).
Вот сам интерфейс:
Как и ожидалось, новому пользователю вообще ничего непонятно и поэтому пришлось разработать вводный интерактивный курс:
Всегда выступаю против модальных окон и попапов, но в этом случае мне кажется их все же целособразно использовать. Можно назвать это «приветственным сообщением».
А вот и сам интерактивный курс, точнее его часть:
Также вы можете включить отображение отдельных подсказок вне зависимости пройдете ли вы вводный курс, либо откажитесь от него.
А что же насчет функционала?
Первое что бросается в глаза — это «Примеры» и сделано это неспроста. Для начала, я настоятельно рекоммендую выбрать наиболее близкий для вашей задачи пример. Вы можете просто переключиться между некорректным и корректным вариантом для более простого понимания примеров. Затем можете изменить выбранный вами пример так, как сами пожелаете. Со временем список примеров будет расширяться:
Далее идет то, ради чего это всё и затевалось — сгенерированное Регулярное Выражение:
Здесь хотелось бы немного остановиться и рассказать подробнее.
С самого начала мне хотелось создать инструмент не ограничивающий пользователей в создании многосложных регулярок и в то же время сделать интерфейс максимально простым. А на деле, сколько раз кардинально изменялся интерфейс я уже и со счета сбился. Также пришлось несколько раз переписывать часть логики самого генератора (ядро). И не потому что архитектура была плохо продумана, а из-за того что некоторые варианты просто не были учтены. А вариантов — огромное множество.
Еще хотелось бы рассказать о возможностях. На данный момент можно создавать регулярку с группами/подгруппами, определять опциональные части (не обязательные), указывать конкретные символы (у остальных будет определяться тип), указать тип — «любой символ» и блокировать определенные символы в конкретной части регулярки. Вы можете довольно просто создать регулярку не только для слова, но и для словосочетания и даже предложения. Доступна генерация регулярок как на латинице и так на кириллице (по отдельности и вместе). По мере добавления дополнительных локализаций интерфейса, планируется поддержка регулярок и для других письменностей.
Кстати, не пугайтесь что регулярное выражение всегда красного цвета. Это не символизирует ошибку, а сделано лишь для того, чтобы акцентировать ваше внимание на этой крайне важной информации.
Далее по порядку идет «Тестовое поле»
Здесь происходит проверка введенного тестового значения на соответствие сгенерированному регулярному выражению. И происходит она «на лету». Ничего нажимать не нужно. Тем самым вы можете гораздо быстрее и удобнее проверить множество вариантов.
Под полем ввода отображается описание автоматически сгенерированного правила.
Есть вариант с описанием правила в виде ошибки, когда введенное тестовое значение не соответствует сгенерированному правилу/регулярке:
На данном примере видно как срабатывает проверка на заблокированные символы:
- «@» до второй «@»;
- «—» в любой части имени домена второго уровня;
- «-» в самом конце домена второго уровня, непослредственно перед символом «.»;
Описание заблокированных символов в правиле отображается не очень понятно. Чуть позже оно будет приведено к такому же виду как и описание основной части правила.
Также есть вариант с описанием правила в отдельном блоке, когда введенное тестовое значение соответствует сгенерированному правилу/регулярке:
Хотелось бы разъяснить значение цветов с частями правила:
- зеленый — правильно
- желтый — опционально
- красный — некорректно
Сгенерированное регулярное выражение может иметь не только обязательные части, но также и опциональные. Хочу также отметить, что автоматическое описание правила делалось именно для будущего плагина, но отлично показало себя и в данном веб-сервисе.
Ядро (UI)
Вот и наконец мы добрались до последнего блока по порядку, но не по значению. Я лично считаю этот блок — ядром всего сервиса. Именно здесь Генератор получает все необходимые входные данные, которые впоследствии обрабатывает и выдает уже готовый результат. Кстати, вся логика реализована только на клиенте. Веб сервис вообще не имеет серверного кода.
Вначале крайне важно понять что машина не умеет читать мысли должна получить хоть какую-то информацию, чтобы проанализировать ее и выдать хоть какой-то результат. Чем правильней и лаконичнее будут примеры, тем правильней и лаконичнее будет результат. Порядок примеров абсолютно ни на что не влияет.
Здесь можно очень долго и нудно рассказывать что и как нужно вводить, но мне кажется это будет намного проще понять с помощью примеров, которых там довольно много. И вообще, материала с описанием как и что работает хватит еще на одну большую статью.
А ты не забыл сохраниться?
После того, как мы нажали кнопку «Генерировать», у нас сгенерировалось регулярное выражение. Теперь мы можем сохранить его. На всякий случай хочу уточнить что сохраняется оно только в памяти браузера (localstorage).
При нажатии на кнопку «Сохранить» появляется диалоговое окно:
Вы можете вручную ввести описание для правила или переключиться на автоматическое описание как в примере ниже. Также вам нужно ввести название для правила:
Этот функционал был разработан с расчетом на будущий плагин, но пригодился и в данном веб-сервисе.
На самом деле, как в случае с примерами так и с пользовательскими правилами, сохраняется не сгенерированное правило, а просто входные данные и каждый раз когда вы переключаете правило — срабатывает логика генератора. Это очень удобно при исправлении багов в логике самого генератора. Тем самым даже сохраненные правила будут работать с последней версией уже исправленного генератора.
Дополнительные возможности
Я расположил их по приоритету:
- Автоматическое сохранение данных в Url параметры. И происходит это сразу же после нажатия на кнопку «Генерировать», либо при переключении примеров или сохраненных правил. Вы можете скинуть кому-то ссылку и при открытии страницы другой пользователь увидит именно то, что вы вводили раннее. Это довольно удобно.
- Полная локализация всего контента. Существующие модули локализации мне сильно не нравились, поэтому ваш покорный слуга создал свой
велосипедочень простой модуль. Всего десяток строк кода. Выбранный язык cчитывается из Url и записывается в Url, сохраняется в Localstorage. Особенно приятно добавлять новые языки, т.к. текст берется только из одного очень простого JSON файла для соответствующего языка. Отдал файлик переводчикам — получил еще один язык. - Извещение о новой версии приложения. Данный веб-сервис — это одностраничное веб приложение (буквально). Из личного опыта знаю что пользователь может месяцами не перезагружать одностраничное приложение и это как раз правильно. Но что делать если вышла новая версия? Как известить об этом пользователя? — Очень просто. Был разработан модуль, который опрашивает сохраненный JSON файл с заданным интервалом времени и как только записанная новая версия не соответствует предыдущей — показывается вот такое извещение:
Технологии
Вот основной стек технологий с помощью которого удалось всё это реализовать:
- TypeScript 2.0 + SystemJS
- Angular 1.5 (с компонентами)
- Angular-Material 1.x
- IntroJS
Код написан в полном Angular 2 Code Style (даже с декораторами), что в будущем позволит очень просто мигрировать (жду только Material2).
Заключение
В дальнейших планах — сделать полноценный плагин, который позволит задавать правила валидации одновременно для клиента и для сервера прямо из интерфейса. Мне кажется это окажется очень удобным и практичным решением. Затем можно развить эту идею и создать даже «Visual Form Builder» на основе как-бы стандарта: «JSON Schema», с которым мне пришлось поработать в свое время.
Если вы захотите сделать что-то аналогичное, я буду только за и даже помогу советами. Считаю что: «Сама идея практически ничего не стоит, стоит ее непосредственная реализация».
В заключение, хочу позволить себе небольшое отступление. Если ты разработчик-мечтатель, как и автор статьи, который получает кайф от своей работы, особенно когда она бросает тебе вызов и хоть немного, но все же решает проблемы других людей, тогда ты скорее всего на правильном пути. Хуже, когда такому человеку приходится гнаться за деньгами, какими-то материальными благами, чтобы соответствовать непонятным социальным стандартам или выполнять скучную, глупую и рутинную работу чтобы просто прокормить себя, свою семью. Кажется не правильным жертвовать своими мечтами, идеями, стремлениями и временем в угоду простым бумажкам. Но в то же время автор статьи никого не побуждает прямо сейчас всё взять и бросить. Каждый должен сделать свой выбор сам и когда для этого наступит действительно подходящее время.
Лучшие статические анализаторы регулярных выражений
Ни для кого не секрет, что регулярные выражения — очень удобный инструмент для решения многих задач, связанных с обработкой текста. Но вряд ли найдется много людей, способных написать любую регулярку с нуля без подсказок, справочников и нескольких (десятков) попыток. Тогда на помощь приходят статические анализаторы регулярных выражений.
Они бывают совершенно различных форматов: в виде онлайн-ресурса, плагина к IDE или браузеру или в виде самостоятельной программы. Первые удобны для разового или редкого использования. Хотя некоторые онлайн-тестеры имеют возможность сохранения шаблона в виде постоянной ссылки или в аккаунте, для регулярного использования больше подойдут плагины или десктопные приложения.
Мы выбрали самые интересные приложения из каждой категории. Все заголовки кликабельны.
Онлайн-приложения
regex101.com
Пожалуй, лучший вариант веб-приложения для разработки регулярных выражений. Поддерживает форматы PCRE (PHP), JavaScript и Python. Есть возможность получить постоянную ссылку на ваш код, сгенерировать код для PHP, JavaScript или Python, создать юнит-тесты, запустить регулярку пошагово и воспользоваться большой библиотекой готовых регулярных выражений.
Debuggex
Ограничен по функционалу, не поддерживает замену по шаблону. Но взамен предоставляет визуализацию вашего регулярного выражения в виде конечного автомата, что заметно упрощает понимание работы и отладку. Также, как и regex101.com, поддерживает синтаксис PCRE, JavaScript или Python. Есть платная подписка с расширенными возможностями, такими как оценка производительности или юнит-тесты с просмотром покрытием кода.
RegExr 2.0
Онлайн-тестер с открытым исходным кодом и приятным дизайном. Хотя по функционалу уступает regex101.com — только один вариант синтаксиса, нет генерации кода и тестов — для простых задач его вполне достаточно. В отличие от Debuggex, поддерживает замену по шаблону.
Плагины для IDE
Regex Util (IDEA plugin)
Плагин для IntelliJ IDEA и других IDE от JetBrains. Минималистичный интерфейс, поддержка замен и разделений по шаблону и всплывающие подсказки с объяснением элементов. Нет возможности сохранения регулярных выражений. Отлично подходит для проверки регулярок перед добавлением в код.
Regex Util (Eclipse plugin)
Аналог плагина для IntelliJ IDEA с тем же функционалом.
Десктопные приложения
Expresso
Одна из лучших программ под Windows для написания и проверки регулярных выражений. Огромное количество возможностей: визуальный редактор, генерация кода, библиотека шаблонов. Программа бесплатная, но после 60 дней использования требует регистрации.
The Regex Coach
Для тех, кому Expresso кажется слишком сложным. Маленькая утилита с возможностью пошагового выполнения регулярного выражения. Поддерживает синтаксис PCRE, который используется в Perl, PHP и очень похож на синтаксис регулярных выражений Java и XML Schema. Программа примечательна тем, что написана на Common Lisp.
Regexbuddy
Достойный конкурент Expresso с большой библиотекой готовых примеров. Платная ($39.95). Кроме того, на сайте разработчика есть отличные программы PowerGrep (для сложного поиска по текстовым файлам) и RegexMagic (визуальный редактор регулярных выражений).
Oyster
Платная ($3.99) утилита под OS X. Отличная программа с большим количеством возможностей, интеграцией с Dash и CodeBox, генерацией кода на Java, JavaScript, Objective-C, Python и других языках.
Что выбрать?
Если вам необходимо часто писать регулярные выражения для обработки текста или других задач, лучший вариант — самостоятельное приложение вроде Expresso или Oyster. Если задача разовая, или вы хотите просто потренироваться, вам помогут онлайн-приложения, такие как regex101.com. Следует заметить, что список выше далеко не полный, и есть еще много программ, которые помогут вам в вашей работе.
Кроме того, возможно, вашу задачу кто-то уже решил и поделился решением с сообществом. Обратите внимание на regexlib.com и RexEgg.
онлайн сервис по работе с регулярными выражениями
Регулярные выражения прочно вошли в жизнь разработчиков и частенько приходят на помощь в тех ситуациях, когда необходимо осуществить специфический поиск или подстановку. Многие текстовые редакторы, программы и утилиты поддерживают поиск по регулярным выражениям (TotalCommander, Notepad++ и пр.), чем значительно облегчают жизнь тем, кто ищет.
Зачастую составление регулярного выражения у многих (не только начинающих разработчиков) вызывает проблемы, и отъем приличного куска времени. Онлайн-сервис easyregexp.ru призван помочь коллегам по цеху (программистам всех мастей и народов) или просто желающим освоить регулярные выражения.
Итак, чем располагает наш сервис:
- Быстрая проверка регулярных выражений
Проверка регулярного выражения с подсветкой синтаксиса. Поможет быстро проверить работоспособность выражения на конкретном примере, достаточно поместить текст в поле «Введите пример текста» и начать вводить регулярное выражение. - Конструктор регулярных выражений
Позволит Вам максимально просто и в кратчайшие сроки собрать регулярное выражение, пользуясь подсказками и проверяя его на реальных функциях поиска и подстановки в PHP и Javascript. На странице конструктора справа от формы для тестирования расположен блок метасимволов, разбитый по категориям. При наведении на символ будет показана краткая информации о нем и пример использования. - Оптимизатор регулярных выражений
Сократит Ваше выражение путем эквивалентных замен до минимального количества символов для повышения читабельности, простоты и понимания. - Сохраняйте Ваши регулярки и делитесь ссылкой с друзьями и коллегами. Сделать это достаточно просто: заполните поля «Введите регулярное выражение» и «Введите пример текста» на странице конструктора, и жмите кнопку «Сохранить». После сохранения Вы получаете ссылку.
- Весь интерфейс сервиса прост и интуитивно понятен, а если нет — то милости просим на страницу FAQ
Если у Вас возникают вопросы, предложения и пожелания, воспользуйтесь контактной формой для связи с администрацией сайта.
Помощники в создании регулярных выражений – Программирование и не только
В настоящее время сложно представить разработку сайтов и приложений без использования регулярных выражений (если только сайт или приложение простенькое). Ведь регулярные выражения представляют собой формальный язык поиска и осуществления манипуляций с подстроками в тексте, который основан на использовании метасимволов (wildcard characters).
Конструктор регулярных выражений
Интересный конструктор регулярных выражений (regexp online generator) для PHP и Javascript. На момент тестирования не корректно работал с регулярными выражениями для PHP, в которых используются русские символы (возникала ошибка в момент вывода результатов). А так, если откинуть данный момент, то вполне неплохой конструктор, в котором можно по практиковаться с составлением различных выражений.
Regular Expression Library
На сайте есть много интересных паттернов регулярных выражений, а также возможность их протестировать прямо на сайте. На данный момент свыше 6500+ регулярных выражений от разных участников проекта. Хорошая возможность подсмотреть или найти для себя нужное регулярное выражение.
PCRE
Еще один простой конструктор регулярных выражений, совместимых с Perl. Вариант для тех, кому не нужно ничего лишнего для создания регулярного выражения.
Генератор правил валидации
Под конец написании статьи нашел еще один интересный сервис для создания регулярных выражений из сопоставляемой строки. Для начала работы достаточно ввести значение в данное поле и нажать на кнопку «Генерировать». После чего вы сами увидите появившееся регулярное выражение в поле RegEx. А вот в тестовом поле можно ввести другое значение, если все правильно, то будет выдан результат о корректности заполнения в соответствии с регуляркой.
Конечно, ресурс не является панацеей при создании новых правил, но тем не менее порой помогает быстро создать новое выражение даже не опытному в этой области человеку.
Ну и еще один конструктор регулярных выражений — RegExr. Аналог PCRE, возможно покажется кому-то более удобным.
Regular Expressions 101
Вот недавно нашел еще одного интересного помощника при составлении регулярных выражений. В нем можно выбрать вид регулярных выражений для PHP, Python, JavaScript или Golang. Есть даже небольшая библиотека готовых выражений.
Хочется сказать, что подобных конструкторов много, но я привел самые наиболее интересные. Возможно вы используете какой-то другой — буду рад вашим комментариям. Следите за обновлениями на моем сайте.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Онлайн калькуляторы
Экзотические единицы длины
Следующий уникальный калькулятор служит для перевода экзотических единиц длины в…
Чей фунт тяжелее?
Следующий онлайн калькулятор о фунтах. Ранее он был очень популярен,…
Уровень жидкости в наклоненном цилиндрическом баке
Следующий онлайн калькулятор может вычислить уровень жидкости в цилиндрической таре…
Температурные шкалы
Следующий онлайн калькулятор переводит температуры между разными шкалами.
Помните калькулятор…
Старинные русские деньги
Следующий калькулятор интересен тем, что он переводит древние российские денежные…
Соответствие размеров обуви
Следующий калькулятор будет очень полезен тем, кто решил купить или…
Системы измерения плоских углов
Следующий калькулятор работает очень просто, вам нужно ввести всего одно…
Рост в русской системе мер
Следующий онлайн калькулятор считает рост человека благодаря русской системе мер…
Размер экрана
Следующий онлайн калькулятор может вычислить габариты экрана телевизоров, компьютеров, проекторов,…
Размер снимка в пикселях и формат фотографии
Перед вами 2 калькулятора: один поможет вам подобрать формат снимков…
Перевод числа плиток в единицы площади и обратно
Следующие 2 калькуляторы переводят заданное число плиток в квадратные метры…
Перевод мер площади из метрической в английскую систему и обратно
Перед вами 2 онлайн-калькулятора. Они переводят меры площади из метрической…
Перевод мер длины из русской системы в метрическую и обратно
Следующий необычный калькулятор переводит меры длины из русской системы в…
Перевод мер длины из метрической в имперскую систему и обратно
Перед вами 2 калькулятора, которые предназначены для перевода мер длины…
Перевод кельвинов в градусы цельсия
Следующий простенький калькулятор переводит введенную вами toC из кельвинов в…
Перевод из фунтов в килограммы и обратно
Следующий калькулятор предназначен для перевода кг в фунты. Также есть…
Перевод из фунтов в дюймы
Следующий онлайн калькулятор переводит калибр древних артиллерийских орудий из фунтов…
Перевод из градусов Фаренгейта в градусы Цельсия
Давайте вспомним калькулятор, который переводит градусы Цельсия в градусы Фаренгейта:…
Перевод дробных чисел из одной системы счисления в другую
Как вы уже могли заметить на нашем сайте есть несколько…
Перевод градусов Цельсия в градусы Фаренгейта
Следующий уникальный калькулятор переводит градусы Цельсия в градусы Фаренгейта. Наверное,…
Перевод градусов минут и секунд в десятичные градусы и обратно
Следующий калькулятор умеет переводить значение угла, которое задано в градусах,…
Перевод градусов в радианы
Следующий калькулятор делает перевод единиц измерения углов из градусов, минут,…
Объем сегмента цилиндра
Следующий калькулятор делает расчет объема сегмента цилиндра. Давайте посмотрим каким…
Объем жидкости в наклоненном цилиндрическом баке
Следующий онлайн-калькулятор считает объем жидкости в бочке, которая имеет цилиндрическую…
Общее время наработки аппарата
Следующий калькулятор служит для детального подсчета суммарной работы аппарата.
Вам…
Сочетание цветов
Перед вами отличный помощник для IT специалистов. С помощью данного…
О римских цифрах
Следующий калькулятор переводит числа, записанные римскими цифрами в простые десятичные…
Метров в секунду и километров в час
Следующий калькулятор переводит скорость из м/с в км/час. Часто при…
Конвертер единиц давления
Начнем с истории. В 17 веке итальянским ученым Торричелли было…
Калькулятор горловины для цилиндрического бака
Следующий онлайн-калькулятор рассчитывает параметры горловины для цилиндрического бочки.
Все работает…
Шпаргалка по регулярным выражениям. В примерах | by Evgeny Vladimirovich | NOP::Nuances of Programming
Регулярные выражения (regex или regexp) очень эффективны для извлечения информации из текста. Для этого нужно произвести поиск одного или нескольких совпадений по определённому шаблону (т.Привет пока$ точное совпадение (начинается и заканчивается как Привет пока)воробушки соответствует любой строке, в которой есть текст воробушки
Квантификаторы — * + ? и {}
abc* соответствует строке, в которой после ab следует 0 или более символов c -> тестabc+ соответствует строке, в которой после ab следует один или более символов cabc? соответствует строке, в которой после ab следует 0 или один символ cabc{2} соответствует строке, в которой после ab следует 2 символа cabc{2,} соответствует строке, в которой после ab следует 2 или более символов cabc{2,5} соответствует строке, в которой после ab следует от 2 до 5 символов ca(bc)* соответствует строке, в которой после ab следует 0 или более последовательностей символов bca(bc){2,5} соответствует строке, в которой после ab следует от 2 до 5 последовательностей символов bc
Оператор ИЛИ — | или []
a(b|c) соответствует строке, в которой после a следует b или c -> тестa[bc] как и в предыдущем примере
Символьные классы — \d \w \s и .
\d соответствует одному символу, который является цифрой -> тест\w соответствует слову (может состоять из букв, цифр и подчёркивания) -> тест\s соответствует символу пробела (включая табуляцию и прерывание строки). соответствует любому символу -> тест
Используйте оператор .
с осторожностью, так как зачастую класс или отрицаемый класс символов (который мы рассмотрим далее) быстрее и точнее.
У операторов \d
, \w
и \s
также есть отрицания ― \D, \W
и \S
соответственно.
Например, оператор \D
будет искать соответствия противоположенные \d
.
\D соответствует одному символу, который не является цифрой -> тест
Некоторые символы, например ^.
и $
вызовут совпадение в начале и конце строки ввода (line), вместо строки целиком (string).
Проверка регулярных выражений онлайн. Проверка логина
От автора: приветствую вас, друзья. Если вы не знаете как быстро и просто проверить ваше регулярное выражение онлайн, тогда эта статья как раз для вас. В статье вы найдете несколько онлайн сервисов для проверки регулярных выражений, которые позволят протестировать шаблон регулярного выражения буквально за считанные секунды. Приступим?
На самом деле подобных сервисов десятки, если не сотни в сети. Однако мне больше всего нравится два онлайн сервиса, которые можно найти по следующим адресам.
regexr.com
regexpal.com
Оба эти сервиса похожи друг на друга как визуально, так и функционально. Чаще всего я на практике пользуюсь первым и второй привел просто в качестве альтернативы.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!
Давайте теперь попробуем составить шаблон регулярного выражения и протестируем работу любого из предложенных сервисов. Например, пусть перед нами стоит задача проверить логин, в котором мы разрешаем только латинские буквы, цифры, символ подчеркивания и тире. Если в строке будет присутствовать любой другой символ, значит такой логин нам не подойдет.
Возможный вариант шаблона регулярного выражения будет таким:
Как видите, выделены только логины, которые нам подходят. Давайте теперь разберем данный шаблон. Как вы помните, шаблон должен быть обрамлен разделителями, в данном случае это слеши (//).
После слешей идут так называемые флаги (еще можно встретить названия: символы внутренних опций или модификаторы шаблона). (начало строки) и $ (конец строки). Таким образом, если во всей строке от начала до конца будет хоть один неразрешенный символ — вся строка не будет приниматься.
Квадратные скобки — [] — являются символьным классом в регулярных выражениях. В символьном классе можно указать набор символов, которые мы хотим найти в строке. В данном случае мы разрешаем латинские литеры от a до z (благодаря флагу i разрешаются также литеры A-Z верхнего регистра), цифры от 0 до 9, символ подчеркивания и тире.
Ну и метасимвол + после символьного класса указывает на допустимое количество перечисленных в символьном классе символов — это может быть 1 символ и более (до бесконечности).
Как видим, все достаточно просто. При желании мы можем сократить регулярное выражение, заменив его таким вариантом:
Как видим, результат не изменился. \w в новом шаблоне соответствует латинским буквам, цифрам и символу подчеркивания.
На этом будем завершать данную статью. Больше о регулярных выражениях вы можете узнать из нашего курса по регулярным выражениям. abc $
Рег.prototype.test () — JavaScript | MDN
Метод test ()
выполняет поиск совпадения между
регулярное выражение и указанная строка. Возвращает true
или
ложь
.
Параметры
-
ул.
- Строка, с которой сравнивается регулярное выражение.
Возвращает
true
, если есть соответствие между регулярным выражением и строкой
ул.
.В противном случае ложь
.
Используйте test ()
всякий раз, когда вы хотите узнать, найден ли шаблон в
нить. test ()
возвращает логическое значение, в отличие от
String.prototype.search ()
метод (который возвращает индекс совпадения, или
-1
, если не найден).
Чтобы получить больше информации (но с более медленным выполнением), используйте
exec ()
метод. (Это похоже на
String.prototype.match ()
метод.)
Как и в случае с exec ()
(или в сочетании с ним), вызывается test ()
.
несколько раз в одном и том же экземпляре глобального регулярного выражения будет проходить мимо
предыдущий матч.привет / .test (str);
console.log (результат);
В следующем примере регистрируется сообщение, зависящее от успеха теста:
function testInput (re, str) {
пусть средняя струна;
if (re.test (str)) {
midstring = 'содержит';
} еще {
midstring = 'не содержит';
}
console.log (`$ {str} $ {midstring} $ {re.source}`);
}
Использование test () в регулярном выражении с
«global» флаг
Когда регулярное выражение имеет глобальный
установлен флаг, test ()
продвинет lastIndex
регулярного выражения.( RegExp.prototype.exec ()
также продвигает
lastIndex
свойство.)
Дальнейшие звонки на test ( str )
возобновят поиск
str
начиная с lastIndex
. В
lastIndex Свойство
будет продолжать увеличиваться каждый раз, когда test ()
возвращает истину
.
Примечание: Пока test ()
возвращает true
,
lastIndex
сбрасывает , а не — даже при тестировании другой строки!
Когда test ()
возвращает false
, вызывающее регулярное выражение
lastIndex
свойство будет сброшено на 0
.
Следующий пример демонстрирует это поведение:
константное регулярное выражение = / foo / g;
regex.test ('фу')
regex.test ('фу')
regex.test ('barfoo')
regex.test ('foobar')
Таблицы BCD загружаются только в браузере
String.prototype.match () — JavaScript | MDN
Метод match ()
извлекает результат сопоставления
строка против регулярного выражения.
Параметры
-
регулярное выражение
- Объект регулярного выражения.
- Если
regexp
не является объектомRegExp
, это
неявно преобразовано в RegExp
новое регулярное выражение ( регулярное выражение )
. - Если вы не укажете никаких параметров и напрямую используете метод
match ()
,
вы получитеМассив
с пустой строкой:[""]
.
Возвращаемое значение
Массив
, содержимое которого зависит от наличия или отсутствия глобального
( g
) флаг или null
, если совпадений не найдено.
- Если используется флаг
g
, все результаты соответствуют полному регулярному
выражение будет возвращено, но группы захвата — нет. - , если флаг
g
не используется, только первое полное совпадение и его
связанные группы захвата возвращаются. В этом случае возвращенный товар будет иметь
дополнительные свойства, как описано ниже.
Дополнительные свойства
Как объяснено выше, некоторые результаты содержат дополнительные свойства, описанные ниже.
-
группы
- Объект именованных групп захвата, ключи которых являются именами, а значения —
группы захвата илиundefined
, если именованные группы захвата не были определены.
Посмотреть группы
и диапазоны для получения дополнительной информации. -
индекс
- Индекс поиска, по которому был найден результат.
-
вход
- Копия поисковой строки.
Если регулярное выражение не включает флаг g
,
ул.match ()
вернет тот же результат, что и
RegExp.exec ()
.
Другие методы
Использование match ()
В следующем примере match ()
используется для поиска ‘ Chapter
‘
за которым следуют 1 или несколько числовых символов, за которыми следует десятичная точка и числовой
символ 0 или более раз.
Регулярное выражение включает флаг i
, поэтому верхний / нижний регистр
различия будут проигнорированы.
const str = 'Дополнительные сведения см. В главе 3.4.5.1 ';
const re = / см. (раздел \ d + (\. \ d) *) / i;
const found = str.match (повторно);
console.log (найдено);
Использование глобальных флагов и флагов игнорирования регистра
с match ()
В следующем примере демонстрируется использование флагов global и ignore case с
матч ()
. Все буквы от A
до E
и
Возвращаются , от
до , e,
, каждый — свой элемент в массиве.
const str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
const regexp = / [A-E] / gi;
const match_array = str.совпадение (регулярное выражение);
console.log (массив совпадений);
Использование именованных групп захвата
В браузерах, которые поддерживают именованные группы захвата, следующий код захватывает
« лиса
» или « кошка
» в группу с названием « животное
»:
const paragraph = 'Быстрая коричневая лисица перепрыгивает через ленивую собаку. Он гавкнул. ';
const capturingRegex = / (? fox | cat) перепрыгивает через /;
const found = paragraph.match (capturingRegex);
console.log (найдено.группы);
Использование match () без параметра
const str = "Ничего из ничего не выйдет.";
str.match ();
Объект, не являющийся RegExp, в качестве параметра
Когда параметр regexp
является строкой или числом, он
неявно преобразовано в RegExp
с помощью
новое регулярное выражение ( регулярное выражение )
.
Если это положительное число с положительным знаком, RegExp ()
проигнорирует
положительный знак.
const str1 = "NaN не означает число. Infinity содержит -Infinity и + Infinity в JavaScript.",
str2 = "Моему дедушке 65 лет, а бабушке 63 года.",
str3 = "Контракт объявлен недействительным.";
str1.match ("число");
str1.match (NaN);
str1.match (Бесконечность);
str1.match (+ Бесконечность);
str1.match (-Бесконечность);
str2.match (65);
str2.match (+65);
str3.match (ноль);
Таблицы BCD загружаются только в браузере
Утверждения — JavaScript | MDN
Утверждения включают границы, которые указывают начало и конец строк и слов, а также другие шаблоны, указывающие каким-либо образом, что соответствие возможно (включая упреждающее, ретроспективное и условные выражения).A / не соответствует «A» в «an A», но соответствует первому «A» в «An A».
Этот символ имеет другое значение, когда он появляется в начале группы.
$
Соответствует концу ввода. Если для многострочного флага установлено значение true, также совпадает непосредственно перед символом разрыва строки. Например, / t $ /
не соответствует «t» в «eater», но соответствует ему в «eat».
\ b
Соответствует границе слова.Это позиция, в которой за символом слова не следует или ему предшествует другой символ слова, например, между буквой и пробелом. Обратите внимание, что совпадающая граница слова не включается в совпадение. Другими словами, длина совпадающей границы слова равна нулю.
Примеры:
-
/ \ bm /
соответствует букве «м» в слове «луна». -
/ oo \ b /
не соответствует «oo» в «moon», потому что за «oo» следует «n», который является символом слова. -
/ oon \ b /
соответствует «oon» в «moon», потому что «oon» является концом строки, поэтому за ним не следует символ слова. -
/ \ w \ b \ w /
никогда ничего не найдет, потому что за символом слова никогда не может следовать и не слово, и символ слова.
Чтобы сопоставить символ возврата ( [\ b]
), см. Классы символов.
\ B
Соответствует границе слова. Это позиция, в которой предыдущий и следующий символы имеют один и тот же тип: либо оба должны быть словами, либо оба не должны быть словами, например, между двумя буквами или между двумя пробелами.Начало и конец строки не считаются словами. Так же, как и совпавшая граница слова, совпавшая несловая граница также не включается в совпадение. Например, / \ Bon /
соответствует «on» в «в полдень», а / ye \ B /
соответствует «ye» в «возможно вчера».
Другие утверждения
Примечание : ? Символ
также может использоваться в качестве квантификатора.
Символы | Значение | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
х (? = У) | Утверждение Lookahead: Соответствует «x», только если за «x» следует «y».Например, / | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
х (?! У) | Утверждение отрицательного просмотра вперед: Соответствует «x», только если за «x» не следует «y». Например, | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(? <= Y) x | Утверждение просмотра назад: Соответствует «x», только если «x» предшествует «y». Например, | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(? | Утверждение отрицательного просмотра назад: Соответствует «x», только если «x» не предшествует «y».А] /. Тест (плод)); console.log (fruitStartsWithNotA); Соответствие границе слова Утверждение опережающего просмотра Базовое утверждение отрицательного просмотра вперед Например, Утверждение просмотра назад
Бесплатный онлайн-тестер регулярных выраженийЭтот бесплатный тестер регулярных выражений позволяет вам проверять ваши регулярные выражения на любую запись по вашему выбору и четко выделяет все совпадения. Он основан на JavaScript и использует библиотеку XRegExp для расширенных функций. За примерами обратитесь к документации по регулярным выражениям или к разделу «Решения регулярных выражений для общих проблем» на этой странице.Если вам нужны другие примеры или решения, свяжитесь со мной. Регулярное выражение: Запись для тестирования: Заменить на (необязательно): Вы можете использовать $ 1, $ 2, $ 3 и т. Д., Если вы используете группы скобок в своем регулярном выражении. \ t \ n \ r поддерживаются. Флаги: ТЕСТОВЫЙ МАТЧ Регулярное выражение - ДокументацияМетасимволы
Регулярное выражение - решения общих проблем (рецепты)Как я могу эмулировать DOTALL в JavaScript? DOTALL - это флаг в самых последних библиотеках регулярных выражений, который делает расширение. метасимвол соответствует чему-либо, ВКЛЮЧАЯ разрывы строк. JavaScript по умолчанию делает Как проверить дату с помощью регулярного выражения? Никогда не используйте регулярное выражение для проверки даты. Регулярное выражение полезно только для проверки формата даты, введенного пользователем. Для фактического срока действия, Следующие выражения будут проверять количество дней в месяце, но НЕ будут обрабатывать проверку високосного года; следовательно, в феврале может быть 29 дней в году, но не более.[ABCEGHJKLMNPRSTVXY] {1} \ d {1} [A – Z] {1} * \ d {1} [A – Z] {1} \ d {1} $ Как извлечь имя файла из пути Windows с помощью регулярного выражения? Поскольку каждая часть пути разделена символом \, нам нужно найти только последнюю. Обратите внимание, что просто нет Как проверить номер телефона в США или Канаде с помощью регулярного выражения? Есть, наверное, десятки способов отформатировать номер телефона. Ваш пользовательский интерфейс должен решить проблему форматирования Как удалить все теги HTML из строки? Убедитесь, что вы находитесь в глобальном режиме (флаг g), регистр регистр не учитывается и опция «точка все» включена. Это регулярное выражение будет соответствовать всем тегам HTML. Как удалить все пустые строки из строки с помощью регулярного выражения?Убедитесь, что вы находитесь в глобальном и многострочном режиме.\ s * \ r? \ n Ссылка на регулярное выражение JavaScriptОбъект RegExpРегулярное выражение - это объект, описывающий набор символов. Регулярные выражения используются для сопоставления с образцом и СинтаксисОбъяснение примера:
Учебник по регулярным выражениям см. В нашем учебном пособии по JavaScript RegExp. МодификаторыМодификаторы используются для выполнения глобального поиска без учета регистра:
МетасимволыМетасимволы - это символы со специальным значением:
Кванторы
Свойства объекта RegExp
|