Тест за Регулярни Изрази
Резултати от Съвпадение
Въведете шаблон и тестов текст, за да видите резултатите
Запазване на Шаблон
Резултати от Съвпадение
Въведете шаблон и тестов текст, за да видите резултатите
Запазени Шаблони
Няма запазени шаблони все още
Ръководство за Символи на Регулярни Изрази
.
Съвпада с всеки символ, освен нов ред\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) е основен инструмент за разработчици, анализатори на данни и всеки, който работи с обработка на текст. Този всеобхватен валидатор на шаблони за регулярни изрази ви позволява да създавате, тествате и усъвършенствате регулярни изрази в реално време, предоставяйки незабавна визуална обратна връзка за съвпаденията на шаблоните. Независимо дали валидирате имейл адреси, парсвате лог файлове или извличате специфични данни от текст, нашият тестер на регулярни изрази прави процеса на разработка и отстраняване на грешки по-бърз и интуитивен.
Регулярните изрази са мощни последователности за съвпадение на шаблони, които позволяват сложни текстови търсения, валидиране и манипулация. Въпреки това, синтаксисът им може да бъде сложен и предизвикателен за овладяване. Този тестер на шаблони за регулярни изрази опростява процеса, като подчертава съвпаденията, докато пишете, валидира синтаксиса на шаблона и ви позволява да запазвате често използвани шаблони за бъдеща справка.
Как да използвате тестера на шаблони за регулярни изрази
Използването на нашия валидатор на регулярни изрази е просто и интуитивно. Следвайте тези стъпки, за да започнете:
-
Въведете шаблон на регулярния израз: Въведете вашия шаблон на регулярния израз в обозначеното поле за въвеждане. Инструментът валидира вашия шаблон в реално време, уведомявайки ви за всякакви синтактични грешки.
-
Изберете флагове за регулярни изрази: Изберете подходящи флагове за вашия шаблон:
g
(Глобален): Намерете всички съвпадения, вместо да спирате след първото съвпадениеi
(Без чувствителност към регистър): Направете шаблона без чувствителност към регистърm
(Много редове): Направете^
и$
да съвпадат с началото/края на всеки ред- Различни комбинации от тези флагове са налични в падащото меню
-
Въведете тестов текст: Въведете текста, с който искате да тествате вашия шаблон в областта за тестов текст.
-
Прегледайте резултатите в реално време: Докато пишете, инструментът автоматично:
- Подчертава всички съвпадения на шаблона в тестовия текст
- Показва общия брой намерени съвпадения
- Указва дали шаблонът съвпада с целия текст
-
Запазете полезни шаблони: За шаблони, които използвате често:
- Въведете описателен етикет за вашия шаблон
- Кликнете върху бутона "Запази"
- Достъпете вашите запазени шаблони от секцията "Запазени шаблони"
-
Копирайте резултатите: Използвайте бутона "Копирай съвпадения" за копиране на целия съвпадащ текст в клипборда за използване в други приложения.
Интерфейсът е разделен на две основни панели: панел за въвеждане, където въвеждате вашия шаблон и тестов текст, и панел за резултати, който показва съвпадения и информация за шаблона.
Основи на регулярните изрази
Регулярните изрази използват специални символи и последователности, за да определят шаблони за търсене. Ето ръководство за основните символи на regex, поддържани от нашия инструмент:
Съвпадение на символи
Символ | Описание | Пример | Съвпадения |
---|---|---|---|
. | Съвпада с всеки символ, с изключение на нов ред | a.c | "abc", "adc", "a1c" и др. |
\d | Съвпада с всяка цифра (0-9) | \d{3} | "123", "456", "789" и др. |
\D | Съвпада с всяка не-цифра | \D+ | "abc", "xyz" и др. |
\w | Съвпада с всеки символ от дума (a-z, A-Z, 0-9, _) | \w+ | "abc123", "test_123" и др. |
\W | Съвпада с всеки не-символ от дума | \W+ | "!@#", " + " и др. |
\s | Съвпада с всеки символ на интервал | a\sb | "a b", "a\tb" и др. |
\S | Съвпада с всеки не-интервален символ | \S+ | "abc", "123" и др. |
Позиционни анкерни символи
Символ | Описание | Пример | Съвпадения |
---|---|---|---|
^ | Съвпада с началото на реда | ^abc | "abc" в началото на реда |
$ | Съвпада с края на реда | abc$ | "abc" в края на реда |
\b | Съвпада с границата на дума | \bword\b | "word" като цяла дума |
Квантификатори
Символ | Описание | Пример | Съвпадения |
---|---|---|---|
* | Съвпада с 0 или повече от предходния символ | a*b | "b", "ab", "aab" и др. |
+ | Съвпада с 1 или повече от предходния символ | a+b | "ab", "aab", "aaab" и др. |
? | Съвпада с 0 или 1 от предходния символ | colou?r | "color", "colour" |
{n} | Съвпада точно с n от предходния символ | a{3} | "aaa" |
{n,} | Съвпада с поне n от предходния символ | a{2,} | "aa", "aaa", "aaaa" и др. |
{n,m} | Съвпада с между n и m от предходния символ | a{2,4} | "aa", "aaa", "aaaa" |
Символи на класове
Символ | Описание | Пример | Съвпадения |
---|---|---|---|
[abc] | Съвпада с всеки един от символите в скобите | [aeiou] | "a", "e", "i", "o", "u" |
[^abc] | Съвпада с всеки символ, който не е в скобите | [^aeiou] | Всеки символ, освен "a", "e", "i", "o", "u" |
[a-z] | Съвпада с всеки символ в диапазона | [a-z] | Всеки малък буква |
Групиране и алтернативи
Символ | Описание | Пример | Съвпадения |
---|---|---|---|
(abc) | Групира множество токени заедно и улавя съвпадението | (abc)+ | "abc", "abcabc" и др. |
a|b | Съвпада или с a, или с b | cat|dog | "cat", "dog" |
Напреднали шаблони на регулярни изрази
След като овладеете основите, можете да създавате по-сложни шаблони, за да решите сложни предизвикателства при обработката на текст:
Валидиране на имейл
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Този шаблон валидира имейл адреси, като осигурява, че те следват стандартния формат: име@домен.tld.
Валидиране на URL
^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$
Този шаблон валидира URL адреси, включително тези с или без протокола http/https.
Валидиране на телефонен номер (формат на САЩ)
^\(?(\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])$
Този шаблон валидира дати в формата YYYY-MM-DD, с основна валидация за диапазоните на месеците и дните.
Поглед напред и поглед назад
Погледите напред и назад позволяват да се съвпадат шаблони само ако са последвани от или предшествани от друг шаблон:
- Положителен поглед напред:
a(?=b)
съвпада с "a", само ако е последвано от "b" - Отрицателен поглед напред:
a(?!b)
съвпада с "a", само ако не е последвано от "b" - Положителен поглед назад:
(?<=a)b
съвпада с "b", само ако е предшествано от "a" - Отрицателен поглед назад:
(?<!a)b
съвпада с "b", само ако не е предшествано от "a"
Работа с флагове за регулярни изрази
Нашият тестер на регулярни изрази поддържа различни флагове, които модифицират начина, по който се съвпадат шаблони:
- g (Глобален): Намерете всички съвпадения, вместо да спирате след първото съвпадение
- i (Без чувствителност към регистър): Направете шаблона без чувствителност към регистър
- m (Много редове): Направете
^
и$
да съвпадат с началото/края на всеки ред - Комбинации: Можете да комбинирате флагове за по-сложни изисквания за съвпадение
Случаи на употреба за тестване на шаблони на регулярни изрази
Регулярните изрази имат множество практически приложения в различни области:
Уеб разработка
-
Валидиране на формуляри: Уверете се, че входовете на потребителите съвпадат с необходимите формати:
- Имейл адреси:
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
- Пароли (с изисквания за сложност):
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
- URL адреси:
^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$
- Имейл адреси:
-
Парсинг на HTML: Извличане на специфични елементи или атрибути:
- Намерете всички тагове за изображения:
<img[^>]+src="([^">]+)"
- Извлечете линкове:
<a[^>]+href="([^">]+)"
- Намерете всички тагове за изображения:
Обработка на данни
-
Анализ на лог файлове: Извличане на информация от записи на логове:
- IP адреси:
\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b
- Времеви печати:
\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}
- Съобщения за грешки:
ERROR: .*
- IP адреси:
-
Парсинг на CSV: Обработка на стойности, разделени с запетаи, с потенциални полета в кавички:
- Съвпадение на полета в CSV:
(?:^|,)(?:"([^"]*(?:""[^"]*)*)"|([^,]*))
- Съвпадение на полета в CSV:
Обработка на текст
-
Намиране и замяна: Идентифициране на шаблони за замяна:
- Премахване на HTML тагове:
<[^>]*>
- Форматиране на телефонни номера:
(\d{3})(\d{3})(\d{4})
→($1) $2-$3
- Премахване на HTML тагове:
-
Извличане на съдържание: Извличане на специфична информация от неструктуриран текст:
- Извличане на дати:
\b(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{1,2},\s+\d{4}\b
- Намиране на парични стойности:
\$\d+(?:\.\d{2})?
- Извличане на дати:
Програмиране и кодиране
-
Синтактично оцветяване: Идентифициране на езикови конструкции:
- Променливи в JavaScript:
\b(?:var|let|const)\s+([a-zA-Z_$][\w$]*)\b
- Дефиниции на функции:
function\s+([a-zA-Z_$][\w$]*)\s*\(
- Променливи в JavaScript:
-
Рефакториране на код: Намиране на шаблони, които трябва да бъдат актуализирани:
- Депрекатирани API повиквания:
\.oldMethod\(
- Ненадеждни функции:
eval\(
- Депрекатирани API повиквания:
Запазване и управление на шаблони
Нашият тестер на регулярни изрази включва система за управление на шаблони, която ви позволява да запазвате и преизползвате вашите често използвани изрази:
Кога да запазите шаблони
Помислете за запазване на шаблони, които:
- Използвате често в различни проекти
- Са сложни и трудни за запомняне
- Служат за специфични цели на валидиране в работата ви
- Сте усъвършенствали след множество итерации
Най-добри практики за етикети на шаблони
Когато запазвате шаблони, използвайте описателни етикети, които:
- Посочват целта на шаблона (напр. "Валидатор на имейли")
- Споменават специфични формати (напр. "Телефонен номер на САЩ")
- Включват информация за версията, ако итерате върху шаблони (напр. "Валидатор на URL v2")
- Са кратки, но информативни
Организация на шаблони
Организирайте вашите запазени шаблони по:
- Функция (валидиране, извличане, замяна)
- Област (уеб разработка, обработка на данни)
- Сложност (основен, напреднал)
- Честота на използване
Споделяне на шаблони
Докато нашият инструмент не поддържа директно споделяне на шаблони между потребители, можете:
- Да копирате шаблони за споделяне с колеги
- Да документирате шаблоните си в споделено хранилище
- Да включите описания на шаблоните в документацията на проекта
Отстраняване на често срещани проблеми с регулярни изрази
Дори опитни разработчици срещат предизвикателства с регулярните изрази. Ето решения на често срещани проблеми:
Синтактични грешки
Ако вашият шаблон показва грешка при валидиране:
- Проверете за несъответстващи скоби, квадратни или фигурни скоби
- Уверете се, че специалните символи са правилно ескейпирани с обратна наклонена черта
- Проверете дали квантификаторите имат предходен символ или група
- Потърсете невалиден синтаксис на класовете символи
Проблеми с производителността
Ако вашият regex е бавен или причинява забавяне на браузъра:
- Избягвайте прекомерната употреба на вложени квантификатори (напр.
(a+)+
) - Бъдете внимателни с погледите напред и назад в големи текстове
- Помислете за използване на по-специфични шаблони вместо широки
- Разделете сложните шаблони на по-малки, по-управляеми части
Неочаквани съвпадения
Ако вашият шаблон съвпада с нежелан текст:
- Използвайте анкерите (
^
и$
), за да съвпадате с цели низове - Направете класовете символи по-специфични
- Добавете граници на думите (
\b
) където е подходящо - Използвайте отрицателни погледи напред, за да изключите определени шаблони
Няма намерени съвпадения
Ако вашият шаблон не съвпада с очаквания текст:
- Проверете за проблеми с чувствителността към регистър (обмислете използването на флага
i
) - Уверете се, че специалните символи са правилно ескейпирани
- Тествайте шаблона си на опростени примери първо
- Уверете се, че използвате правилните класове символи
Алтернативи на регулярните изрази
Въпреки че regex е мощен, не винаги е най-доброто решение за всяка задача по обработка на текст:
Методи на низове
За прости текстови операции, вродените методи на низове често са по-ясни и по-ефективни:
String.indexOf()
за намиране на поднизовеString.startsWith()
иString.endsWith()
за проверка на границите на низоветеString.split()
за основна токенизация
Специализирани парсери
За структурирани формати на данни, посветените парсери са по-надеждни:
- JSON парсери за JSON данни
- XML/HTML парсери за маркирани езици
- CSV парсери за таблични данни
Обработка на естествен език (NLP)
За разбиране на значението на текста, а не само на шаблоните:
- Инструменти за анализ на настроения
- Разпознаване на именувани обекти
- Тагиране на части от речта
Кога да изберете алтернативи
Обмислете алтернативи на regex, когато:
- Структурата на текста е много редовна и проста
- Форматът има наличен стандартен парсер
- Трябва да разберете семантичното значение
- Производителността е критична за много големи текстове
Често задавани въпроси
Какво е регулярният израз?
Регулярният израз (regex) е последователност от символи, която определя шаблон за търсене. Тези шаблони могат да се използват за търсене на низове, съвпадение и операции по манипулация на текст.
Защо ми е нужен тестер на шаблони за регулярни изрази?
Тестерът на шаблони за регулярни изрази ви помага да разработвате и отстранявате грешки в регулярни изрази, като предоставя незабавна визуална обратна връзка за съвпадения, валидира синтаксиса на шаблона и ви позволява да експериментирате с различни шаблони и флагове, без да е необходимо да ги имплементирате в кода първо.
Как да съвпадна с буквален специален символ като точка или звездичка?
За да съвпаднете с буквални специални символи, които обикновено имат специално значение в regex, трябва да ги ескейпирате с обратна наклонена черта. Например, за да съвпаднете с буквална точка, използвайте \.
вместо просто .
.
Каква е разликата между .*
и .*?
в шаблон на regex?
.*
е жаден квантификатор, който съвпада с колкото се може повече символи, докато .*?
е мързелив (нежаден) квантификатор, който съвпада с колкото се може по-малко символи. Това разграничение е важно, когато искате да намерите най-краткото съвпадение, а не най-дългото.
Мога ли да използвам този тестер на regex за шаблони в който и да е програмен език?
Докато основният синтаксис на regex е подобен в много езици, има фини разлики в имплементацията. Нашият тестер използва regex двигателя на JavaScript, който е съвместим с много уеб езици, но може да има разлики от regex в езици като Python, Java или Perl.
Как да валидирам цял низ с regex?
За да валидирате, че целият низ съвпада с шаблон, използвайте анкерите ^
в началото и $
в края на вашия regex. Например, ^[0-9]+$
ще съвпадне само с низове, които се състоят изцяло от цифри.
Какво са групите за улавяне и как да ги използвам?
Групите за улавяне, създадени с кръгли скоби ()
, ви позволяват да извлечете специфични части от съвпаднатия текст. В нашия тестер можете да видите всички съвпадения, включително уловените групи. В програмиращите езици обикновено можете да получите достъп до тези уловки чрез индексиране на резултата от съвпадението.
Как мога да направя шаблоните си за regex по-ефективни?
За да подобрите ефективността на regex: бъдете специфични с класовете символи, избягвайте ненужните групи за улавяне (използвайте неуловими групи (?:...)
, когато е възможно), ограничете използването на погледи напред/назад, и избягвайте катастрофалните шаблони за обратно проследяване, като вложени квантификатори.
Какви са най-честите грешки с regex, които да избягвам?
Чести грешки включват: не ескейпиране на специални символи, създаване на шаблони, които са твърде жадни, забравяне да анкерувате шаблони (с ^
и $
), и писане на прекалено сложни изрази, които са трудни за поддържане.
Може ли regex да обработва вложени структури като HTML?
Регулярните изрази не са добре подходящи за парсинг на вложени структури като HTML или XML. Въпреки че можете да създадете шаблони на regex за просто съвпадение на HTML, обикновено е по-добре да използвате посветен парсер за сложна обработка на HTML.
Референции
- Friedl, J. E. F. (2006). Mastering Regular Expressions. O'Reilly Media.
- Goyvaerts, J., & Levithan, S. (2012). Regular Expressions Cookbook. O'Reilly Media.
- "Регулярен израз." Уикипедия, Фондация Уикимедия, https://en.wikipedia.org/wiki/Regular_expression
- MDN Web Docs. "Регулярни изрази." Mozilla, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
- RegExr: Научете, изградете и тествайте RegEx. https://regexr.com/
Изпробвайте нашия тестер на шаблони за регулярни изрази днес, за да опростите задачите си по обработка на текст, да валидирате формати на вход и да извлечете значими данни от неструктуриран текст. Независимо дали сте начинаещ, който учи основите на регулярните изрази, или опитен разработчик, работещ по сложни съвпадения на шаблони, нашият инструмент предоставя функциите, от които се нуждаете, за да създавате, тествате и усъвършенствате вашите шаблони за regex ефективно.