Бърза справочна таблица за синтаксиса на регулярни изрази

Регулярните изрази, известни също като шаблони, са текстови модели, които обикновено се използват за извличане, замяна и контрол на текст. Те включват букви от a до z и някои специални метасимволи. Регулярните изрази имат много широк обхват на приложение и първоначално бяха популяризирани от Unix. По-късно те намериха приложение и в Scala, PHP, C#, Java, C++, Objective-C, Perl, Swift, VBScript, Javascript, Ruby, както и Python и др. Ученето на регулярни изрази всъщност представлява усвояване на много гъвкава логическа мисъл, която позволява бързо и лесно управление на низове.
Регулярен символ Описание
\ Маркира следващия символ като специален, или като символ с оригинален смисъл, или като обратна референция, или като осемнадесетичен escape символ. Например, “n" съвпада с символ "n". "\n" съвпада с нов ред. Веригата "\\" съвпада с "\", докато "\(" съвпада с "(".
^ Съвпада с началната позиция на входния низ. Ако свойството Multiline на обекта RegExp е зададено, ^ също съвпада с позицията след "\n" или "\r".
$ Съвпада с крайния символ на входния низ. Ако свойството Multiline на обекта RegExp е зададено, $ също съвпада с позицията преди "\n" или "\r".
* Съвпада с предишния подизраз нула или повече пъти. Например, zo* може да съвпада с "z" и "zoo". * е равно на {0,}.
+ Съвпада с предишния подизраз веднъж или повече пъти. Например, “zo+" може да съвпада с "zo" и "zoo", но не и с "z". + е равно на {1,}.
? Съвпада с предишния подизраз нула или веднъж. Например, “do(es)?" може да съвпада с "does" или с "do" в "does". ? е равно на {0,1}.
{n} n е ненегативно цяло число. Съвпада с точно n повторения. Например, “o{2}" не може да съвпадне с "Bob", но може да съвпадне с двете "o" в "food".
{n,} n е ненегативно цяло число. Съвпада с поне n повторения. Например, “o{2,}" не може да съвпадне с "Bob", но може да съвпадне с всички "o" в "foooood". "o{1,}" е равно на "o+". "o{0,}" е равно на "o*".
{n,m} m и n са ненегативни цели числа, където n <= m. Съвпада с поне n повторения и най-много m. Например, “o{1,3}" ще съвпадне с първите три "o" в "fooooood". "o{0,1}" е равно на "o?". Имейте предвид, че между запетаята и двете числа не трябва да има интервал.
? Когато този символ незабавно следва след всеки друг оператор ( *, +, ?, {n}, {n,}, {n,m} ), начинът на съвпадение е ненаситен. Ненаситният режим съвпада с колкото се може по-малко символи от търсения низ, докато стандартният жесток режим съвпада с колкото може повече символи от търсения низ. Например, за низа “oooo", "o+?" ще съвпадне с един "o", докато "o+" ще съвпадне с всички "o".
. Съвпада с всякакъв един символ, освен с “\n". За да съвпадне с всякакъв символ, включително "\n", използвайте модел като "(.|\n)".
(pattern) Съвпада с pattern и получава това съвпадение. Полученото съвпадение може да бъде взето от генерираните колекции `Matches`; в VBScript използвайте колекцията `SubMatches`, а в JScript - свойствата `$0...$9`. За да съвпаднете с символа на кръгла скоба, използвайте “\(" или "\)".
(?:pattern) Съвпада с pattern, но не получава резултата от съвпадението, т.е. е ненаситен. Това е полезно при комбиниране на частите на един шаблон с оператора "или" “(|)". Например "industr(?:y|ies)" е по-кратка форма на "industry|industries".
(?=pattern) Положителен предварителен преглед, който съвпада с търсения низ в началото на всяка съвпадаща низ pattern. Това е ненаситен, означава, че това съвпадение не се нуждае от взимане за по-късна употреба. Например, “Windows(?=95|98|NT|2000)" ще съвпадне с "Windows" в "Windows2000", но не и с "Windows" в "Windows3.1". Предварителното преглед не консумира символи, т.е. след съвпадение, след последното съвпадение, след това незабавно започва следващото търсене за съвпадение вместо да започне от символите след включеното предварително преглед.
(?!pattern) Отрицателен предварителен преглед, който съвпада с търсения низ в началото на всеки низ, който не съвпада с pattern. Това е ненаситен, означава, че не се нуждае от взимане за по-късна употреба. Например, “Windows(?!95|98|NT|2000)" ще съвпадне с "Windows" в "Windows3.1", но не и с "Windows" в "Windows2000". Предварителното преглед не консумира символи, т.е. след съвпадение, след последното съвпадение, след това незабавно започва следващото търсене за съвпадение вместо да започне от символите след включеното предварително преглед.
(?<=pattern) Отрицателен положителен предварителен преглед, аналогичен на положителния предварителен преглед, само че посоката е обратна. Например, “(?<=95|98|NT|2000)Windows" ще съвпадне с "2000Windows", но не и с "3.1Windows".
(?<!pattern) Отрицателен отрицателен предварителен преглед, аналогичен на отрицателния предварителен преглед, само че посоката е обратна. Например “(?<!95|98|NT|2000)Windows" ще съвпадне с "3.1Windows", но не и с "2000Windows".
x|y Съвпада с x или y. Например, “z|food" може да съвпадне с "z" или "food". "(z|f)ood" съвпада с "zood" или "food".
[xyz] Система от знаци. Съвпада с всеки един от включените символи. Например, “[abc]" може да съвпадне с "a" в "plain".
[^xyz] Отрицателна система от знаци. Съвпада с всеки символ, който не е включен. Например, “[^abc]" може да съвпадне с "p" в "plain".
[a-z] Диапазон от знаци. Съвпада с всеки символ в зададения диапазон. Например, “[a-z]" може да съвпадне с всяка малка буква от "a" до "z".
[^a-z] Отрицателен диапазон от знаци. Съвпада с всеки символ, който не е в зададения диапазон. Например, “[^a-z]" може да съвпадне с всеки символ, който не е между "a" и "z".
\b Съвпада с граница на дума, т.е. местоположението между дума и интервал. Например, “er\b" може да съвпадне с "never", но не и с "verb".
\B Съвпада с не-граница на дума. “er\B" може да съвпадне с "verb", но не и с "never".
\cx Съвпада с контролен символ, посочен от x. Например, \cM съвпада с контролен M или символ за нов ред. Стойността на x трябва да бъде една от A-Z или a-z. В противен случай c е виждан като оригинален символ “c".
\d Съвпада с цифров символ. Равно на [0-9].
\D Съвпада с не-цифров символ. Равно на [^0-9].
\f Съвпада с символ за нова страница. Равно на \x0c и \cL.
\n Съвпада с символ за нов ред. Равно на \x0a и \cJ.
\r Съвпада с символ за извикване. Равно на \x0d и \cM.
\s Съвпада с всякакъв интервален символ, включително интервали, табулации, символи за нова страница и др. Равно на [ \f\n\r\t\v].
\S Съвпада с всеки не-интервален символ. Равно на [^ \f\n\r\t\v].
\t Съвпада с символ за табулация. Равно на \x09 и \cI.
\v Съвпада с вертикален символ за табулация. Равно на \x0b и \cK.
\w Съвпада с всякакъв символ на дума, включително символа за долна черта. Равно на “[A-Za-z0-9_]".
\W Съвпада с не-символ на дума. Равно на “[^A-Za-z0-9_]".
\xn Съвпада с n, където n е шестнадесетичен оригинален код. Шестнадесетичният оригинелен код трябва да е точно две цифри. Например, “\x41" съвпада с "A". "\x041" също е равно на "\x04&1". В регулярните изрази е позволено използването на ASCII кодиране.
\num Съвпада с num, където num е положително цяло число. За референция на получените съвпадения. Например, “(.)\1" съвпада с два последователни идентични символа.
\n Идентифицира осемнадесетичен оригинален код или обратна референция. Ако \n има поне n получени подизрази преди, то n е обратна референция. В противен случай, ако n е осемнадесетично число (0-7), то n е осемнадесетичен оригинален код.
\nm Идентифицира осемнадесетичен оригинален код или обратна референция. Ако \nm има поне nm получени подизрази преди, тогава nm е обратна референция. Ако \nm има поне n получени, то n се състои от символ > m. Ако нито едно от условията не е изпълнено, ако n и m са осемнадесетични числа (0-7), то \nm ще съвпаде с осемнадесетичния оригинален код nm.
\nml Ако n е осемнадесетично число (0-3), и m и l са осемнадесетични (0-7), ще съвпадне с осемнадесетичния оригинален код nml.
\un Съвпада с n, където n е Unicode символ, представен от четири шестнадесетични цифри. Например, \u00A9 съвпада с символа за авторски права (©).
Често използвани регулярни изрази
Потребителско име /^[a-z0-9_-]{3,16}$/
Парола /^[a-z0-9_-]{6,18}$/
Парола 2 (?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$ (Състои се от цифри/главни букви/малки букви/символи, всички четири вида са задължителни и над 8 знака)
Шестнадесетичен код /^#?([a-f0-9]{6}|[a-f0-9]{3})$/
Електронна поща /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
/^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ или \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
URL /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ или [a-zA-z]+://[^\s]*
IP адрес /((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/
/^(?:(?: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]?)$/ или ((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
HTML таг /^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ или <(.*)(.*)>.*<\/\1>|<(.*) \/>
Премахване на код\\коментари (?<!http:|\S)//.*$
Съвпадение с двубайтови символи (включително китайски) [^\x00-\xff]
Китайски символи [\u4e00-\u9fa5]
Диапазон от китайски символи в Unicode кодировка /^[\u2E80-\u9FFF]+$/
Китайски и целостни препинателни символи [\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
Дата (година-месец-ден) (\d{4}|\d{2})-((0?([1-9]))|(1[1|2]))-((0?[1-9])|([12]([1-9]))|(3[0|1]))
Дата (месец/ден/година) ((0?[1-9]{1})|(1[1|2]))/(0?[1-9]|([12][1-9])|(3[0|1]))/(\d{4}|\d{2})
Време (час:минути, 24-часов формат) ((1|0?)[0-9]|2[0-3]):([0-5][0-9])
Фиксирани телефонни номера в Китай (\d{4}-|\d{3}-)?(\d{8}|\d{7})
Мобилни номера в Китай 1\d{10}
Пощенски код в Китай [1-9]\d{5}
Лична карта в Китай (15 или 18 цифри) \d{15}(\d\d[0-9xX])?
Ненегативни цели числа (положителни или нула) \d+
Положителни числа [0-9]*[1-9][0-9]*
Отрицателни числа -[0-9]*[1-9][0-9]*
Цели числа -?\d+
Деца с десетичен знак (-?\d+)(\.\d+)?
Празни редове \n\s*\r или \n\n(editplus) или ^[\s\S ]*\n
QQ номер [1-9]\d{4,}
Думи, които не съдържат abc \b((?!abc)\w)+\b
Съвпадение с начални и крайни интервални символи ^\s*|\s*$
Редактиране на често използвани
Следват някои замени за специален китайски текст (editplus)
^[0-9].*\n
^[^第].*\n
^[习题].*\n
^[\s\S ]*\n
^[0-9]*\.
^[\s\S ]*\n
<p[^<>*]>
href="javascript:if\(confirm\('(.*?)'\)\)window\.location='(.*?)'"
<span style=".[^"]*rgb\(255,255,255\)">.[^<>]*</span>
<DIV class=xs0>[\s\S]*?</DIV>

Бърза справка за синтаксис на регулярни изрази - Често използвани техники и синтаксис на регулярните изрази

Регулярните изрази са мощен инструмент за обработка на текст, а тази страница ви предоставя бърза справка за синтаксиса на регулярни изрази, за да ви помогне бързо да разберете основния синтаксис, модификатори, подизрази, конкурентни и ненаситни модуси и т.н.

Основен синтаксис на регулярни изрази

Регулярните изрази описват правила за шаблони на низове, а често срещаните основни синтаксиси включват:

Често използвани модификатори на регулярни изрази

Модификаторите за регулярни изрази променят правилата за съвпадение на регулярните изрази, а често срещаните модификатори включват:

Конкурентни и ненаситни модуси

В регулярните изрази, модификаторите по подразбиране са конкурентни, те опитват да съвпаднат колкото може повече символи. Ненаситният режим се използва, като се добави ? след модификатора, ето такъв пример:

Подизрази и групи

Подизразите в регулярните изрази се дефинират с кръгли скоби ( ( ) ), обикновено се използват, за да извлекат част от съвпадението. Групирането се реализира с помощта на оператора "или" “(|)". Например:

Бързо търсене на регулярни изрази

Следва бързо търсене на често използвани регулярни изрази:

Функция Регулярен израз
Съвпадение с цифри \d
Съвпадение с не-цифри \D
Съвпадение с букви [a-zA-Z]
Съвпадение с всякакъв символ .
Съвпадение с интервални символи \s

Приложение на регулярни изрази

Регулярните изрази се използват широко в следните случаи:

Съвети за учене на регулярни изрази

Незабавно използвайте нашата бърза справка за синтаксиса на регулярни изрази, за да станете по-ефективни при написването на регулярни изрази и да подобрите способностите си за обработка на текст!

Вашият следи:
Изберете език