Прескочи към съдържанието

Безплатен онлайн Regex Тестер & Валидатор - Тествайте Шаблони Незабавно

Тествайте и валидирайте регулярни изрази онлайн с маркиране в реално време. Безплатен тестер за regex шаблони с валидация на синтаксис, резултати от съвпадения и функция за запазване. Тествайте regex сега!

Тестер на Regex Pattern

Резултати от съвпаденията

Въведете pattern и тестов текст, за да видите резултатите

Запазване на Pattern

Запазени Pattern-и

Все още няма запазени pattern-и

Ръководство за Regex символи

.Съвпада с всеки символ, освен нов ред
\dСъвпада с всяка цифра (0-9)
\DСъвпада с всеки символ, който не е цифра
\wСъвпада с всеки буквено-цифров символ (a-z, A-Z, 0-9, _)
\WСъвпада с всеки символ, който не е буквено-цифров
\sСъвпада с всеки интервален символ
\SСъвпада с всеки символ, който не е интервален
^Съвпада с началото на реда
$Съвпада с края на реда
*Съвпада с 0 или повече от предходния символ
+Съвпада с 1 или повече от предходния символ
?Съвпада с 0 или 1 от предходния символ
{n}Съвпада точно с n от предходния символ
{n,}Съвпада с поне n от предходния символ
{n,m}Съвпада между n и m от предходния символ
[abc]Съвпада с който и да е от символите в скобите
[^abc]Съвпада с всеки символ, който не е в скобите
(abc)Групира множество токъни заедно и прихваща съвпадението
a|bСъвпада или с a, или с b
\bСъвпада с позиция на граница на дума
Калкулатор за зареждане...
📚

Документация

Какво представлява тестерът за регулярни изрази

Тестерът за регулярни изрази е инструмент, който проверява регулярен израз спрямо текст и показва с какво съвпада. Регулярният израз, или regex, е кратка последователност от знаци, която описва шаблон в текста, например „три последователни цифри“ или „дума, започваща с главна буква“. Този валидатор на регулярни изрази позволява на човек да въведе шаблон и тестов текст и веднага да види съвпаденията, без да пише код.

Регулярните изрази се използват в много езици за програмиране за търсене в текст, проверка дали потребителският вход е в правилния формат и извличане на конкретни части от по-голям текстов блок. Синтаксисът им е компактен, но лесно може да бъде сгрешен, затова тестването на шаблона преди използването му в програма помага за ранното откриване на грешки.

Как да тествате регулярен израз онлайн

  1. Въведете шаблон. Въведете регулярния израз в полето за шаблон. Инструментът проверява синтаксиса, докато потребителят пише, и показва съобщение за грешка, ако шаблонът е невалиден, например ако квадратна скоба или кръгла скоба е оставена незатворена.
  2. Изберете флагове. Флаговете променят начина, по който се прилага шаблонът (вижте по-долу).
  3. Въведете тестов текст. Въведете или поставете текста за търсене в полето за тестов текст.
  4. Прегледайте резултатите. Съвпаденията са маркирани в текста, а инструментът показва колко съвпадения е намерил. Ако има тестов текст, той също посочва дали шаблонът съвпада с целия текст от началото до края или само с част от него.
  5. Запазете шаблон. Шаблонът може да бъде съхранен с кратък етикет, за да се използва отново по-късно. Запазените шаблони се съхраняват в браузъра, а не на сървър, затова се показват само на същото устройство и в същия браузър.
  6. Копирайте резултатите. Съвпадащият текст или самият шаблон могат да бъдат копирани в клипборда с едно щракване.

Флагове на регулярните изрази

Флагът е една буква, добавена след шаблона, която променя поведението му. Този инструмент поддържа четири флага, самостоятелно или в комбинация:

ФлагНаименованиеДействие
gГлобаленНамира всички съвпадения в текста, вместо да спира при първото.
iБез чувствителност към регистъраНе прави разлика между главни и малки букви.
mМногоредовПрави така, че ^ и $ да съвпадат с началото и края на всеки ред, а не само с началото и края на целия текст. Това променя местата, на които се намират съвпаденията, но не и проверката на целия текст, описана по-долу.
sТочка за всички знациПрави така, че . да съвпада и със знаците за нов ред.

Флаговете могат да се комбинират, например gi за глобален режим без чувствителност към регистъра или gms за едновременно глобален, многоредов режим с точка за всички знаци.

Как инструментът намира съвпаденията

Механизмът за съвпадения винаги търси всяко срещане на шаблона в текста, поради което броенето на съвпаденията се държи така, сякаш глобалният флаг е включен, дори когато не е избран от падащото меню. Всяко съвпадение се записва с позицията и дължината му, след което оригиналният текст се разделя на съвпадащи и несъвпадащи части, за да могат съвпаденията да бъдат маркирани.

За да провери дали шаблонът съвпада с целия текст, инструментът поставя шаблона в незахващаща група и го огражда с котви: ^(?:pattern)$. Групирането е важно, защото | (алтернацията) има по-слаба свързваща сила от котвите. Без групата шаблон като cat|dog, ограден като ^cat|dog$, всъщност би означавал „започва с cat или завършва с dog“, което не е същото като „целият текст е cat или dog“.

Тази проверка също премахва многоредовия флаг. При зададено m ^ и $ съвпадат при всеки край на ред, така че оградената проверка би отговорила на въпроса „съвпада ли някой ред?“, вместо „съвпада ли целият текст?“. Инструментът премахва m за тази проверка и запазва i и s, защото те променят с какво съвпада шаблонът, а не местата на котвите. Следователно отговорът винаги се отнася до целия текст, включително новите редове.

Пример с решение

Шаблон: \d+ (една или повече цифри), флаг: g, тестов текст: Room 12 has 5 chairs.

  • Намерени съвпадения: 12 и 5, така че броят на съвпаденията е 2.
  • Проверка на целия текст: шаблонът не съвпада с целия текст, защото текстът съдържа и букви, и интервали.

Ако тестовият текст бъде променен на 12345, същият шаблон съвпада с целия низ, така че проверката на целия текст отчита истина.

Справочник за синтаксиса на регулярните изрази

Съвпадение на знаци

СимволЗначениеПримерСъвпада с
.Всеки знак с изключение на нов редa.c„abc“, „adc“, „a1c“
\dВсяка цифра от 0 до 9\d{3}"123", "456"
\DВсеки знак, който не е цифра\D+„abc“, „xyz“
\wВсяка буква, цифра или долна черта\w+„abc123“, „test_123“
\WВсеки знак, който не е буква, цифра или долна черта\W+"!@#"
\sВсеки знак за интервалa\sb„a b“
\SВсеки знак, който не е знак за интервал\S+„abc“

Котви за позиции

СимволЗначениеПримерСъвпада с
^Начало на ред^abc„abc“ в началото на ред
$Край на редabc$„abc“ в края на ред
\bГраница на дума\bword\b„word“ като цяла дума

Квантори

СимволЗначениеПримерСъвпада с
*Нула или повече повторения на предходния елементa*b„b“, „ab“, „aab“
+Едно или повече повторения на предходния елементa+b„ab“, „aab“
?Нула или едно повторение на предходния елементcolou?r„color“, „colour“
{n}Точно n повторения на предходния елементa{3}„aaa“
{n,}Най-малко n повторения на предходния елементa{2,}„aa“, „aaa“
{n,m}Между n и m повторения на предходния елементa{2,4}„aa“, „aaa“, „aaaa“

Набори от знаци и групи

СимволЗначениеПримерСъвпада с
[abc]Всеки един знак, посочен в скобите[aeiou]всяка отделна гласна
[^abc]Всеки знак, който не е посочен в скобите[^aeiou]всеки знак, който не е гласна
(abc)Групира знаците и улавя съвпадението(abc)+„abc“, „abcabc“
abСъвпада с a или bcat

Има още две функции, които е полезно да се познават. Поглед напред, записан като a(?=b), съвпада с „a“ само когато след него има „b“, без да включва „b“ в съвпадението. Поглед назад, записан като (?<=a)b, съвпада с „b“ само когато то идва непосредствено след „a“.

Често срещани примери за шаблони

Тези шаблони могат да бъдат поставени в инструмента, за да се види как се държат спрямо примерен текст.

Само цифри: ^\d+$ съвпада с низ, съставен изцяло от цифри, например „48210“, и отхвърля всеки низ с буква или интервал.

Имейл адрес (основна проверка): ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ съвпада с адреси във формата name@domain.tld, например „user@example.com“. Това е проста проверка, а не пълният формат на имейл адрес, определен от интернет стандартите, затова някои необичайни, но валидни адреси ще бъдат отхвърлени.

Телефонен номер в САЩ: ^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$ съвпада с формати като „(123) 456-7890“, „123-456-7890“ и „1234567890“.

Дата във формат YYYY-MM-DD: ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$ проверява дали месецът е между 01 и 12, а денят — между 01 и 31. Тя не проверява дали денят е валиден за конкретния месец, затова приема „2024-02-30“, въпреки че февруари никога няма 30 дни.

Често задавани въпроси

Какво представлява регулярният израз? Регулярният израз е последователност от знаци, която определя шаблон за търсене. Той се използва за търсене, съпоставяне и редактиране на текст в повечето езици за програмиране и текстови редактори.

Какво прави глобалният флаг? Без глобалния флаг търсенето обикновено спира след първото съвпадение. С глобалния флаг (g) търсенето продължава и отчита всяко съвпадение в текста. Този инструмент винаги търси всички съвпадения при броенето им, независимо от избрания флаг.

Как да съпоставя буквална точка или друг специален знак? Поставете обратна наклонена черта пред него. Например \. съвпада с буквална точка вместо с „всеки знак“, което означава неескейпнатото ..

Каква е разликата между .* и .*?? .* е алчен и съвпада с възможно най-много знаци. .*? е ленив и съвпада с възможно най-малко знаци, като същевременно позволява на останалата част от шаблона да съвпадне.

Защо инструментът казва, че текстът не съвпада изцяло, когато всеки ред съвпада? Проверката на целия текст разглежда текста като един низ, включително новите редове. Шаблон като \d+ съвпада поотделно с всеки ред — 12 и 34, но двата реда и новият ред между тях не са само цифри, затова отговорът за целия текст е отрицателен. За да съвпадне текст, който обхваща няколко реда, шаблонът трябва да включва и новите редове, например чрез [\s\S]+.

Как да проверя дали целият низ съвпада с шаблон, а не само част от него? Добавете ^ в началото и $ в края на шаблона, например ^[0-9]+$ за низ, съставен само от цифри.

Този тестер съвпада ли с правилата за регулярни изрази на други езици за програмиране? Този инструмент използва вградения в JavaScript механизъм за регулярни изрази. Повечето основни елементи на синтаксиса, като класовете от знаци и кванторите, са общи за езици, включително Python, Java и Perl, но има различия в някои подробности, затова не е гарантирано, че шаблон, който работи тук, ще се държи по същия начин навсякъде.

Източници

  1. "Regular expression." Wikipedia, Фондация Wikimedia. https://en.wikipedia.org/wiki/Regular_expression
  2. MDN Web Docs. "Regular expressions." Mozilla. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
  3. Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.