Онлайн регулярные выражения c: Регулярные выражения онлайн конструктор
Регулярные выражения онлайн конструктор
Все статьиРегулярные выражения онлайн конструктор
Флаг:
PREG_SET_ORDERPREG_PATTERN_ORDERPREG_OFFSET_CAPTURE
Шаблон:
Текст:
Проверить
Управляющие символы
Представление | Символ | Расшифровка |
---|---|---|
\t | Табуляция | Horizontal tabulation |
\v | Вертикальная табуляция | Vertical tabulation |
\r | Возврат каретки | Carriage return |
\n | Перевод строки | Line feed |
\f | Конец страницы | Form feed |
\a | Звонок | Bell character |
\e | Escape-символ | Escape character |
\b | Забой Должен находиться внутри квадратных скобок (иначе интерпретируется как граница слова). | Backspace |
\cA … \cZ | Ctrl A … Ctrl Z Например, последовательность \cM\cJ соответствует управляющим символам CR LF. Эквивалентно \x01 … \x1A. | |
\d | [0-9] | Цифра |
\D | [^\d] | Любой символ, кроме цифры |
\w | [A-Za-zА-Яа-я0-9_] | Символы, образующие «слово» (буквы, цифры и символ подчёркивания)[1] |
\W | [^\w] | Символы, не образующие «слово» |
\s | [ \t\v\r\n\f] | Пробельный символ |
\S | [^\s] | Непробельный символ |
Символьные классы POSIX
POSIX-класс | Эквивалент | Значение |
---|---|---|
[:upper:] | [A-Z] | Символы верхнего регистра |
[:lower:] | [a-z] | Символы нижнего регистра |
[:alpha:] | [[:upper:][:lower:]] | Буквы |
[:digit:] | [0-9], т. е. \d | Цифры |
[:xdigit:] | [[:digit:]A-Fa-f] | Шестнадцатеричные цифры |
[:alnum:] | [[:alpha:][:digit:]] | Буквы и цифры |
[:word:] | [[:alnum:]_], т. е. \w | Символы, образующие «слово» |
[:punct:] | [-!»#$%&'()* ,./:;?@[\\\]_`{|}~] | Знаки пунктуации |
[:blank:] | [ \t] | Пробел и табуляция |
[:space:] | [[:blank:]\v\r\n\f], т. е. \s | Пробельные символы |
[:cntrl:] | [\x00-\x1F\x7F] | Управляющие символы |
[:graph:] | [\x21-\x7E] | Печатные символы |
[:print:] | [\x20-\x7E], т. е. [[:graph:] ] | Печатные символы с пробелом |
Позиция внутри строки
Представление | Позиция | Пример | Соответствие |
---|---|---|---|
^ | Начало строки | ^a | aaa aaa |
$ | Конец строки | a$ | aaa aaa |
\b | Граница слова | a\b | aaa aaa |
\ba | aaa aaa | ||
\B | Не граница слова | \Ba\B | aaa aaa |
\G | Предыдущий успешный поиск | \Ga | aaa aaa (поиск остановился на 4-й позиции — там, где не нашлось a) |
Представление символов по их коду
Представление | Пояснение | Кодировка |
---|---|---|
\0n | n — восьмеричное число от 0 до 377 | 8-битная |
\xdd | d — шестнадцатеричная цифра | |
\udddd | 16-битная (Юникод) |
Квантификация (поиск последовательностей)
Представление | Число повторений | Пример | Соответствие |
---|---|---|---|
{n} | Ровно n раз | colou{3}r | colouuur |
{m,n} | От m до n включительно | colou{2,4}r | colouur, colouuur, colouuuur |
{m,} | Не менее m | colou{2,}r | colouur, colouuur, colouuuur и т. д. |
{,n} | Не более n | colou{,3}r | color, colour, colouur, colouuur |
 
Представление | Число повторений | Эквивалент | Пример | Соответствие |
---|---|---|---|---|
* | Ноль или более | {0,} | colou*r | color, colour и т. д. |
+ | Одно или более | {1,} | colou r | colour, colouur и т. д. (но не color) |
? | Ноль или одно | {0,1} | colou?r | color, colour |
Перечисление
Вертикальная черта разделяет допустимые варианты. Например, gray|grey соответствует gray или grey. Следует помнить, что перебор вариантов выполняется слева направо, как они указаны.
Если требуется указать перечень вариантов внутри более сложного регулярного выражения, то его нужно заключить в группу. Например, gray|grey или gr(a|e)y описывают строку gray или grey. В случае с односимвольными альтернативами предпочтителен вариант gr[ae]y, так как сравнение с символьным классом выполняется проще, чем обработка группы с проверкой на все её возможные модификаторы и генерацией обратной связи.
оригинал статьи wiki
Визуальный генератор регулярных выражений / Хабр
Все разработчики рано или поздно сталкиваются с регулярными выражениями. Практически в 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», с которым мне пришлось поработать в свое время.
Если вы захотите сделать что-то аналогичное, я буду только за и даже помогу советами. Считаю что: «Сама идея практически ничего не стоит, стоит ее непосредственная реализация».
В заключение, хочу позволить себе небольшое отступление. Если ты разработчик-мечтатель, как и автор статьи, который получает кайф от своей работы, особенно когда она бросает тебе вызов и хоть немного, но все же решает проблемы других людей, тогда ты скорее всего на правильном пути. Хуже, когда такому человеку приходится гнаться за деньгами, какими-то материальными благами, чтобы соответствовать непонятным социальным стандартам или выполнять скучную, глупую и рутинную работу чтобы просто прокормить себя, свою семью. Кажется не правильным жертвовать своими мечтами, идеями, стремлениями и временем в угоду простым бумажкам. Но в то же время автор статьи никого не побуждает прямо сейчас всё взять и бросить. Каждый должен сделать свой выбор сам и когда для этого наступит действительно подходящее время.
5 сервисов для тестирования и отладки
Регулярные выражения проверяются с помощью специальных сервисов. Такие сайты совмещают тестирование, подсказки и оптимизацию.
Популярный ресурс, понятный даже новичку. Тестит регулярные выражения PHP, JavaScript, Golang и Python. Проверка регулярных выражений сопровождается цветными пометками, которые разделяют символы на группы. Есть отладчик, сохранение и генератор кода с поддержкой C#, Java регулярок, Ruby, Rust, Perl.
Больше языков, но хуже интерфейс. Если начинающий кодер захочет протестировать регулярные выражения PHP онлайн и забредет на этот сайт, то, скорее всего, тут же выйдет. Для опытных же программистов RegexPlanet – это сервис-находка с поддержкой сразу десятка языков. Можно «скармливать» регулярные выражения JS, Ruby, Haskell и многое другое.
Неплохая проверка регулярных выражений онлайн, да еще и российский сервис. Страница информационного и практического характера. Если с английским не заладилось, это подходящий ресурс. Поддерживаются только регулярки JScript, но познавательная статья для новичков и удобство калькулятора заслуживают места в перечне.
Сайт с хорошей визуализацией и удобным интерфейсом. Поддерживается проверка регулярных выражений Python, JavaScript и PCRE. Если нажать «View Cheatsheet», внизу выскочат подсказки в виде распространенных регулярок для выбранного языка. Правда, сервис не поддерживает глобальный поиск, поэтому найти подходящую под шаблон строку можно лишь раз.
Отличный ресурс для проверки регулярных выражений онлайн на языке Ruby. Он на ходу отмечает подстроки, соответствующие шаблону. Также можно сохранить результат, а линк на него переслать. Визуально приятный и доступный для понимания интерфейс. Внизу разместился «Regex quick reference», он же перечень регулярок.
Онлайн калькулятор: Проверка регулярных выражений
Раньше я как-то не очень любил регулярные выражения. Они казались мне довольно странной и загадочной штукой, которую невозможно понять. Однако недавно по работе понадобилось применить их во всю мощь, ну и пришлось разобраться.
По моему опыту, чтобы разобраться, надо просто найти толковое описание. Могу порекомендовать главу 24 из книги Джозефа и Бена Албахари «C# 3.0. Справочник» издательства O’Reilly. До C# 3.0 дело у меня так и не дошло, и это единственная глава из книги, которую я прочитал, но про регулярные выражения написано понятно.
Собственно, регулярки — крутейшая вещь. И везде они есть, в том числе и на Javascript, на котором пишутся все калькуляторы на нашем сайте. В нем есть такой объект RegExp. Вот ты туда текст регулярки пихаешь, и начинаешь ее по всякому использовать.
Как использовать?
Во-первых, есть такой метод test(string) — возвращает выражение true, если регулярка заматчилась (нашлось совпадение в тексте), и false, если ничего не нашлось.
Во-вторых, есть метод exec(string) — который позволяет извлечь то, что заматчилось. В результате вызова этого метода получаем массив результатов. Он нужен, если в тексте регулярки мы использовали группировку скобками ().
Массив там, кстати, не очень массив. Если были группы, то нулевой элемент массива это все совпадение целиком, а все последующие — это группы. Кроме того, там есть два свойства, input — это вообще вся строка, которую передали на вход, и index — видимо, индекс в массиве (не знаю, зачем оно нужно).
В-третьих, можно использовать регулярку для замены по строке, вызовом source_string.replace(regex, replace_string). Наверно, для этого ее используют больше всего.
Ну а ниже калькулятор, который позволит поиграться с регулярными выражениями.
Вводим текст, на который будет натравливаться регулярное выражение, само выражение, модификаторы (по умолчанию — искать по всей строке), строку для замены.
На выходе получаем результаты вызовов методов test, exec, и replace на введенном тексте. Вот так можно на ходу тренироваться на кошках, если не уверен, что твоя регулярка правильно сработает.
Проверка регулярных выражений
Вот текст, с номерами вида 1111111, или 2323434, или 5557777. Вообще, с учетом вида регулярки, номера могут содержать 5-7 и больше цифр, и все равно распознаваться и приводиться к красивому виду, смотри 77777 или 5-2222. Почувствуйте мощь регулярок!
Исходный текст
Результат вызова метода test
Результат вызова метода exec
Результат вызова метода replace
save Сохранить extension Виджет
Интернет регулярно тестер выражение (ака регулярное выражение калькулятор ) позволяет выполнять различные регулярные действия выражении по данному тексту:
Регулярный калькулятор выражений поддерживает флаги как глобальное матча (выполнения регулярных выражений действие на весь текст, а не первого вхождения), игнорировать регистр ( случай, предоставленной тексте, будут проигнорированы) и многострочный матч (выполнения регулярных выражений вычисления на границах между строк). Правила Регулярных выражений
Примеры регулярных выражений
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Сервис для онлайн-проверки регулярных выражений
Извините, для работы приложения нужен включённый Javascript
Символьные классы и специальные символы | |||||||
[abc] | Любой из a, b, c | [^abc] | Любой, кроме a, b, c | [a-z] | Любой из диапазона | [a-zА-Я] | Любой из диапазонов |
. | Любой символ | \. | Символ точки | \\ | Символ «обратный слэш» | ||
( ) | Подшаблон | (a|b) | Выбор a или b в подшаблоне | ||||
^ | Начало строки | $ | Конец строки | \A | Начало текста | \z | Конец текста |
\s | Пробельный символ | \S | Не пробельный символ | \n | Новая строка Unix | \r\n | Новая строка Windows |
\b | Граница слова (начало/конец) | \t | Табуляция | \d | Цифра 0-9 | \D | Не цифра |
\w | Буква (включая цифры и подчёркивание) | \W | Не буква (специальный символ) | \pL | Буква в utf-8, с модификатором u | ||
Квантификаторы | x? | Один x или пусто | x* | Ноль и более x | x+ | Один и более x | x{3} | x ровно 3 раза |
x{3,} | x 3 и более раз | x{3,5} | x от 3 до 5 раз | ||||
Модификаторы | |||||||
i | Поиск не зависит от регистра. «/x/i» ищет и x, и X. | U | Не жадный (ищущий минимальное соответствие) поиск | u | Искать в Юникоде (utf-8) | m | Искать в многострочном тексте |
s | Точка соответствует также переводу строки | x | Игнорировать пробелы (в этом случае они экранируются обратным слэшем \) |
Руководство C# | Регулярные выражения
82
C# — Руководство по C# — Регулярные выражения
Регулярные выражения — это часть небольшой технологической области, невероятно широко используемой в огромном диапазоне программ. Регулярные выражения можно представить себе как мини-язык программирования, имеющий одно специфическое назначение: находить подстроки в больших строковых выражениях.
Это не новая технология, изначально она появилась в среде UNIX и обычно используется в языке программирования Perl. Разработчики из Microsoft перенесли ее в Windows, где до недавнего времени эта технология применялась в основном со сценарными языками. Однако теперь регулярные выражения поддерживаются множеством классов .NET из пространства имен System.Text.RegularExpressions. Случаи применения регулярных выражений можно встретить во многих частях среды .NET Framework. В частности, вы найдете их в серверных элементах управления проверкой ASP.NET.
Введение в регулярные выражения
Язык регулярных выражений предназначен специально для обработки строк. Он включает два средства:
Набор управляющих кодов для идентификации специфических типов символов
Система для группирования частей подстрок и промежуточных результатов таких действий
С помощью регулярных выражений можно выполнять достаточно сложные и высокоуровневые действия над строками:
Идентифицировать (и возможно, помечать к удалению) все повторяющиеся слова в строке
Сделать заглавными первые буквы всех слов
Преобразовать первые буквы всех слов длиннее трех символов в заглавные
Обеспечить правильную капитализацию предложений
Выделить различные элементы в URI (например, имея http://www.professorweb.ru, выделить протокол, имя компьютера, имя файла и т.д.)
Главным преимуществом регулярных выражений является использование метасимволов — специальные символы, задающие команды, а также управляющие последовательности, которые работают подобно управляющим последовательностям C#. Это символы, предваренные знаком обратного слеша (\) и имеющие специальное назначение.
В следующей таблице специальные метасимволы регулярных выражений C# сгруппированы по смыслу:
Символ | Значение | Пример | Соответствует |
---|---|---|---|
Классы символов | |||
[…] | Любой из символов, указанных в скобках | [a-z] | В исходной строке может быть любой символ английского алфавита в нижнем регистре |
[^…] | Любой из символов, не указанных в скобках | [^0-9] | В исходной строке может быть любой символ кроме цифр |
. | Любой символ, кроме перевода строки или другого разделителя Unicode-строки | ||
\w | Любой текстовый символ, не являющийся пробелом, символом табуляции и т.п. | ||
\W | Любой символ, не являющийся текстовым символом | ||
\s | Любой пробельный символ из набора Unicode | ||
\S | Любой непробельный символ из набора Unicode. Обратите внимание, что символы \w и \S — это не одно и то же | ||
\d | Любые ASCII-цифры. Эквивалентно [0-9] | ||
\D | Любой символ, отличный от ASCII-цифр. Эквивалентно [^0-9] | ||
Символы повторения | |||
{n,m} | Соответствует предшествующему шаблону, повторенному не менее n и не более m раз | s{2,4} | «Press», «ssl», «progressss» |
{n,} | Соответствует предшествующему шаблону, повторенному n или более раз | s{1,} | «ssl» |
{n} | Соответствует в точности n экземплярам предшествующего шаблона | s{2} | «Press», «ssl», но не «progressss» |
? | Соответствует нулю или одному экземпляру предшествующего шаблона; предшествующий шаблон является необязательным | Эквивалентно {0,1} | |
+ | Соответствует одному или более экземплярам предшествующего шаблона | Эквивалентно {1,} | |
* | Соответствует нулю или более экземплярам предшествующего шаблона | Эквивалентно {0,} | |
Символы регулярных выражений выбора | |||
| | Соответствует либо подвыражению слева, либо подвыражению справа (аналог логической операции ИЛИ). | ||
(…) | Группировка. Группирует элементы в единое целое, которое может использоваться с символами *, +, ?, | и т.п. Также запоминает символы, соответствующие этой группе для использования в последующих ссылках. | ||
(?:…) | Только группировка. Группирует элементы в единое целое, но не запоминает символы, соответствующие этой группе. | ||
Якорные символы регулярных выражений | |||
^ | Соответствует началу строкового выражения или началу строки при многострочном поиске. | ^Hello | «Hello, world», но не «Ok, Hello world» т.к. в этой строке слово «Hello» находится не в начале |
$ | Соответству |
Классы символов | |
---|---|
. | любой символ, кроме новой строки |
\ ш \ д \ с | слово, цифра, пробел |
\ W \ D \ S | не слово, цифра, пробел |
[abc] | любой из a, b или c |
[^ abc] | не a, b или c |
[а-г] | символ между a и g |
Анкеры | |
^ abc $ | начало / конец строки |
\ б | граница слова |
Экранированные символы | |
\.\ * \\ | экранированных специальных символов |
\ t \ n \ r | табуляция, перевод строки, возврат каретки |
\ u00A9 | Unicode сброшен © |
Группы и поиск | |
(abc) | группа захвата |
\ 1 | обратная ссылка на группу № 1 |
(?: Abc) | группа без захвата |
(? = Abc) | положительный прогноз |
(?! Abc) | негативный прогноз |
Квантификаторы и чередование | |
а * а + а? | 0 или более, 1 или более, 0 или 1 |
а {5} а {2,} | ровно пять, два или больше |
а {1,3} | между одним и тремя |
а +? а {2,}? | совпадений как можно меньше |
ab | cd | соответствует ab или cd |
.
Бесплатный онлайн-тестер регулярных выражений
Этот бесплатный тестер регулярных выражений позволяет вам проверять ваши регулярные выражения на соответствие любой записи по вашему выбору и четко выделяет все совпадения. Он основан на JavaScript и использует библиотеку XRegExp для расширенных функций.
См. Примеры в документации по регулярным выражениям или в разделе «Решения регулярных выражений для общих проблем» на этой странице. Если вам нужно больше примеров или решений, свяжитесь со мной.
Регулярное выражение:
Запись для тестирования:
Заменить на (необязательно):
Вы можете использовать $ 1, $ 2, $ 3 и т. Д., Если вы используете группы скобок в регулярном выражении. \ t \ n \ r поддерживаются.
Флаги:
ТЕСТОВЫЙ МАТЧ
ЗАМЕНИТЬ
Регулярное выражение — Документация
Метасимволы
Персонаж | Что он делает? | |
---|---|---|
\ |
| |
$ | Соответствует концу ввода . В многострочном режиме он также соответствует перед символом разрыва строки , следовательно, каждым концом строки. | |
* | Соответствует предыдущему символу 0 или более раз . | |
+ | Соответствует предыдущему символу 1 или более раз . | |
? |
| |
. | Соответствует любому одиночному символу, кроме символа новой строки . | |
(х) | Совпадает с ‘x’ и запоминает совпадение . Также известен как захватывающая скобка. | |
(?: X) | Соответствует ‘x’, но НЕ запоминает совпадение . Также известна как НЕ захватывающая скобка. | |
х (? = У) | Соответствует ‘x’ , только если за ‘x’ следует ‘y’ .Также известен как опережающий просмотр. | |
х (?! Y) | Соответствует ‘x’ , только если за ‘x’ НЕ следует ‘y’ . Также известен как отрицательный прогноз. | |
x | y | Соответствует ‘x’ ИЛИ ’y’ . | |
{n} | Соответствует предыдущему символу ровно n раз . | |
{n, m} | Соответствует предыдущему символу не менее n раз и не более m раз.abc] | Соответствует чему-либо, НЕ заключенному в скобки . Также известен как отрицательный набор символов. |
[\ b] | Соответствует отступу . | |
\ б | Соответствует границе слова . Границы определяются, когда за символом слова НЕ следует или НЕ предшествует другой символ слова. | |
\ B | Соответствует границе БЕЗ слов .Границы определяются, когда два соседних символа являются символами слова ИЛИ символами, не являющимися словами. | |
\ cX | Соответствует управляющему символу . X должен быть от A до Z включительно. | |
\ d | Соответствует -значному символу . То же, что [0-9] или [0123456789]. | |
\ D | Соответствует нецифровому символу .0123456789]. | |
\ f | Соответствует подаче формы . | |
\ п | Соответствует переводу строки . | |
\ r | Соответствует возврату каретки . | |
\ с | Соответствует одиночному символу пробела . Это включает пробел, табуляцию, перевод страницы и перевод строки. | |
\ S | Соответствует чему-либо, кроме одного символа пробела . Все, кроме пробела, табуляции, перевода страницы и перевода строки. | |
\ т | Соответствует табуляции . | |
\ v | Соответствует вертикальной табуляции . | |
\ w | Соответствует любому буквенно-цифровому символу, включая подчеркивание .A-Za-z0-9_]. | |
\ х | Обратная ссылка на подстроку, совпадающую с выражением x в скобках. x — целое положительное число. | |
\ 0 | Соответствует нулевому символу . | |
\ ххх | Соответствует символу с двухзначным шестнадцатеричным кодом . | |
\ уххх | Соответствует символу с 4-значным шестнадцатеричным кодом . |
Регулярное выражение — решения общих проблем (рецепты)
Как я могу эмулировать DOTALL в JavaScript?
DOTALL — это флаг в самых последних библиотеках регулярных выражений, который делает расширение. метасимволы соответствуют чему-либо, ВКЛЮЧАЯ разрывы строк. JavaScript по умолчанию делает
не поддерживаю это с тех пор. метасимвол соответствует чему угодно, НО разрывы строк. Чтобы подражать такому поведению, просто заменяет все. метасимволы
автор: [\ S \ s].Это означает соответствие всему, что является одним символом пробела ИЛИ всем, что не является символом пробела!
[\ S \ s]
Как проверить адрес EMAIL с помощью регулярного выражения?
Не существует 100% надежного решения, поскольку RFC слишком сложен. Это лучшее решение, которое должно работать в 99% случаев. Проконсультируйтесь на этой странице
подробнее об этой проблеме. Всегда отключайте чувствительность к регистру!
^ [- a-z0-9 ~! $% ^ & * _ = +} {\ '?] + (\.& * _ = +} {\ '?] +) * @ ([a-z0-9 _] [- a-z0-9 _] * (\. [- a-z0-9 _] +) * \. (aero | arpa | biz | com | coop | edu | gov | info | int | mil | museum | name | net | org | pro | travel | mobi | [az] [az]) | ([0-9] {1, 3} \. [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3})) (: [0-9] {1, 5})? $
Как проверить IP-адрес (IPV4) с помощью регулярного выражения?
Это гарантирует, что каждое число в IP-адресе находится в диапазоне от 0 до 255, в отличие от версии, использующей \ d {1,3}, которая допускает 999.999.999.999.
Если вы хотите сопоставить IP-адрес в строке, избавьтесь от начальных ^ и конечных $, чтобы вместо них использовать \ b (границы слов).(? 🙁 ?: 25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) \.) {3} (?: 25 [0-5] | 2 [0-4] [0-9] | [01]? [0-9] [0-9]?) $
Как проверить дату с помощью регулярного выражения?
Никогда не используйте регулярное выражение для проверки даты. Регулярное выражение полезно только для проверки формата даты, введенного пользователем. Для фактической даты действия,
вам следует полагаться на другой язык.
Следующие выражения будут проверять количество дней в месяце, но НЕ будут обрабатывать проверку високосного года; следовательно, в феврале может быть 29 дней в году, но не более.[ABCEGHJKLMNPRSTVXY] {1} \ d {1} [A – Z] {1} * \ d {1} [A – Z] {1} \ d {1} $
Как извлечь имя файла в пути Windows с помощью регулярного выражения?
Поскольку каждая часть пути разделяется символом \, нам нужно найти только последнюю. Обратите внимание, что просто нет
способ проверить, является ли последняя часть пути файлом или каталогом, только по имени. Вы можете попытаться сопоставить
расширение, но файл не обязательно должен иметь расширение.\\] + $
Как проверить номер телефона в США или Канаде с помощью регулярного выражения?
Вероятно, существует множество способов отформатировать номер телефона. Ваш пользовательский интерфейс должен решить проблему форматирования
имея четкую документацию по формату и / или разделив телефон на части (область, телефонная линия, номер) и / или имея маску ввода.
Следующее выражение довольно мягко относится к формату и должно принимать 999-999-9999, 9999999999, (999) 999-9999.(?: 2131 | 1800 | 35 \ d {3}) \ d {11} $
Как удалить все теги HTML из строки?
Убедитесь, что вы находитесь в глобальном режиме (флаг g), регистр регистр не учитывается и опция точка все включена. Это регулярное выражение будет соответствовать всем тегам HTML.
и их атрибуты. Это оставит содержимое тегов внутри строки.
Как удалить все пустые строки из строки с помощью регулярного выражения?
Убедитесь, что вы находитесь в глобальном и многострочном режиме.\ s * \ r? \ n
.
Классы символов | |
---|---|
. | любой символ, кроме новой строки |
\ ш \ д \ с | слово, цифра, пробел |
\ W \ D \ S | не слово, цифра, пробел |
[abc] | любой из a, b или c |
[^ abc] | не a, b или c |
[а-г] | символ между a и g |
Анкеры | |
^ abc $ | начало / конец строки |
\ б | граница слова |
Экранированные символы | |
\.\ * \\ | экранированных специальных символов |
\ t \ n \ r | табуляция, перевод строки, возврат каретки |
\ u00A9 | Unicode сброшен © |
Группы и поиск | |
(abc) | группа захвата |
\ 1 | обратная ссылка на группу № 1 |
(?: Abc) | группа без захвата |
(? = Abc) | положительный прогноз |
(?! Abc) | негативный прогноз |
Квантификаторы и чередование | |
а * а + а? | 0 или более, 1 или более, 0 или 1 |
а {5} а {2,} | ровно пять, два или больше |
а {1,3} | между одним и тремя |
а +? а {2,}? | совпадений как можно меньше |
ab | cd | соответствует ab или cd |
.
Классы символов | |
---|---|
. | любой символ, кроме новой строки |
\ ш \ д \ с | слово, цифра, пробел |
\ W \ D \ S | не слово, цифра, пробел |
[abc] | любой из a, b или c |
[^ abc] | не a, b или c |
[а-г] | символ между a и g |
Анкеры | |
^ abc $ | начало / конец строки |
\ б | граница слова |
Экранированные символы | |
\.\ * \\ | экранированных специальных символов |
\ t \ n \ r | табуляция, перевод строки, возврат каретки |
\ u00A9 | Unicode сброшен © |
Группы и поиск | |
(abc) | группа захвата |
\ 1 | обратная ссылка на группу № 1 |
(?: Abc) | группа без захвата |
(? = Abc) | положительный прогноз |
(?! Abc) | негативный прогноз |
Квантификаторы и чередование | |
а * а + а? | 0 или более, 1 или более, 0 или 1 |
а {5} а {2,} | ровно пять, два или больше |
а {1,3} | между одним и тремя |
а +? а {2,}? | совпадений как можно меньше |
ab | cd | соответствует ab или cd |
.