Безплатен онлайн Regex Тестер & Валидатор - Тествайте Шаблони Незабавно
Тествайте и валидирайте регулярни изрази онлайн с маркиране в реално време. Безплатен тестер за regex шаблони с валидация на синтаксис, резултати от съвпадения и функция за запазване. Тествайте regex сега!
Тестер на Regex Pattern
Резултати от съвпаденията
Въведете 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, е кратка последователност от знаци, която описва шаблон в текста, например „три последователни цифри“ или „дума, започваща с главна буква“. Този валидатор на регулярни изрази позволява на човек да въведе шаблон и тестов текст и веднага да види съвпаденията, без да пише код.
Регулярните изрази се използват в много езици за програмиране за търсене в текст, проверка дали потребителският вход е в правилния формат и извличане на конкретни части от по-голям текстов блок. Синтаксисът им е компактен, но лесно може да бъде сгрешен, затова тестването на шаблона преди използването му в програма помага за ранното откриване на грешки.
Как да тествате регулярен израз онлайн
- Въведете шаблон. Въведете регулярния израз в полето за шаблон. Инструментът проверява синтаксиса, докато потребителят пише, и показва съобщение за грешка, ако шаблонът е невалиден, например ако квадратна скоба или кръгла скоба е оставена незатворена.
- Изберете флагове. Флаговете променят начина, по който се прилага шаблонът (вижте по-долу).
- Въведете тестов текст. Въведете или поставете текста за търсене в полето за тестов текст.
- Прегледайте резултатите. Съвпаденията са маркирани в текста, а инструментът показва колко съвпадения е намерил. Ако има тестов текст, той също посочва дали шаблонът съвпада с целия текст от началото до края или само с част от него.
- Запазете шаблон. Шаблонът може да бъде съхранен с кратък етикет, за да се използва отново по-късно. Запазените шаблони се съхраняват в браузъра, а не на сървър, затова се показват само на същото устройство и в същия браузър.
- Копирайте резултатите. Съвпадащият текст или самият шаблон могат да бъдат копирани в клипборда с едно щракване.
Флагове на регулярните изрази
Флагът е единична буква, добавена след шаблона, която променя поведението му. Този инструмент предлага четири от стандартните флагове на JavaScript:
| Флаг | Име | Ефект |
|---|---|---|
g | Глобален | Намира всички съвпадения в текста, вместо да спира при първото. |
i | Без разлика между главни и малки букви | Не прави разлика между главни и малки букви. |
m | Многоредов | Кара ^ и $ да съвпадат с началото и края на всеки ред, а не само с началото и края на целия текст. |
s | Точка за всички знаци | Прави така, че . да съвпада и със знаците за нов ред. |
Флаговете се избират от падащ списък. Той показва всеки флаг поотделно, както и няколко готови комбинации, които включват g, например gi за глобален и без разлика между главни и малки букви или gms за глобален, многоредов и точка за всички знаци заедно.
Как инструментът намира съвпаденията
Механизмът за съвпадения винаги търси всяко срещане на шаблона в текста, поради което броенето на съвпаденията се държи така, сякаш глобалният флаг е включен, дори когато не е избран от падащото меню. Всяко съвпадение се записва с позицията и дължината му, след което оригиналният текст се разделя на съвпадащи и несъвпадащи части, за да могат съвпаденията да бъдат маркирани.
За да провери дали шаблонът съвпада с целия текст, инструментът обгражда шаблона в група без захващане и го закотвя: ^(?:pattern)$. Групирането е важно, защото | (алтернация) се свързва по-слабо от котвите. Без групата шаблон като cat|dog, закотвен като ^cat|dog$, би означавал всъщност „започва с cat или завършва с dog“, което не е същото като „целият текст е cat или dog“. Проверката използва избраните флагове без g и m. Пропускането на m държи ^ и $ вързани за началото и края на целия текст, така че шаблон, който пасва само на един ред от многоредов текст, не се брои за съвпадение с целия текст.
Пример с решение
Шаблон: \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" |
| a\ | b | Съвпада с a или b | cat\ |
Заслужават внимание още две възможности. Предварителната проверка (lookahead), записана като a(?=b), съвпада с „a“ само когато след него следва „b“, без да включва „b“ в съвпадението. Проверката назад (lookbehind), записана като (?<=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) търсенето продължава и отчита всяко съвпадение в текста. Този инструмент винаги търси всички съвпадения при броенето им, независимо от избрания флаг.
Как да съпоставя буквална точка или друг специален знак?
Поставете обратна наклонена черта пред него. Например \. съвпада с буквална точка вместо с „всеки знак“, което означава неекранираният ..
Каква е разликата между .* и .*??
.* е алчен и съвпада с възможно най-много знаци. .*? е мързелив и съвпада с възможно най-малко знаци, като пак позволява на останалата част от шаблона да успее.
Как да проверя дали целият низ съвпада с шаблон, а не само част от него?
Добавете ^ в началото и $ в края на шаблона, например ^[0-9]+$ за низ, съставен само от цифри.
Този тестер съвпада ли с правилата за регулярни изрази на други езици за програмиране? Този инструмент използва вградения в JavaScript механизъм за регулярни изрази. Повечето основни елементи на синтаксиса, като класовете от знаци и кванторите, са общи за езици, включително Python, Java и Perl, но има различия в някои подробности, затова не е гарантирано, че шаблон, който работи тук, ще се държи по същия начин навсякъде.
Източници
- MDN Web Docs. Regular expressions. Ръководство за регулярните изрази — флаговете на JavaScript g, i, m (
^и$съвпадат във всеки ред) и s (.съвпада с нови редове). - MDN Web Docs. Assertions. Проверки в регулярните изрази — предварителната проверка съвпада с x само ако след x следва y; проверката назад съвпада с x само ако пред x стои y.
- MDN Web Docs. Quantifiers. Квантори в регулярните изрази — кванторите са алчни по подразбиране; завършващо ? ги прави неалчни.
- Resnick, P. (ed.). RFC 5322: Internet Message Format. RFC Editor, 2008. RFC 5322 — стандартният синтаксис на адреси, чиято локална част допуска знаци като ! # ' и *, които основният шаблон отхвърля.