pondělí 19. dubna 2010

Oblíbené regulární výrazy

02855323_foto_200_7b2cf0b33eRegulární výrazy jako takové jsou obrovskou kapitolou sami osobě, a v žádném případě se nechci pouště do toho, abych je zde podrobně rozebíral. Nicméně rád bych zde zmínil několik opakujících se výrazů.

Testování schody pomocí regulárních výrazů

Myslím, že nejpoužívanější výraz je ověření e-mailu:

[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,5}

Běžně je k vidění omezení délky domény nejvyššího řádu od 2 do 4 znaků. Já osobně preferuji nastavení od 2 do 5 znaků, z důvodu testování domény .local vhodnou například v intranetech.


Další frekventovaný případ regulárního výrazu je ověření telefonního čísla:


^(\+420)? ?[0-9]{3} ?[0-9]{3} ?[0-9]{3}$

Následuje regulární výraz pro ověření poštovního směrovací čísla:


\d{3} ?\d{2}

Následující výraz je poměrně obsáhlý, nicméně jeho rozsah je famózní. Dokáže otestovat URL adresu protokolu http, https, ftp a povoluje jak doménové jména tak i IP adresu ve verzi 4:


(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)?((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.[a-zA-Z]{2,4})(\:[0-9]+)?(/[^/][a-zA-Z0-9\.\,\?\'\\/\+&%\$#\=~_\-@]*)* 

Náhrady pomocí regulárních výrazů


Velmi oblíbený regulární výraz, který má využití například v diskusních fórech je náhrada URL adresy za odkaz na adresu:


Regulární výraz:
((http://)|(www\.))([^ ]+[^,. ])

Náhrada:
<a href="http://$3$4">$2$3$4</a>

Občas se hodí výraz pro náhradu určitého tagu v html dokumentu za jiný. V tomto nám může dobře posloužit následující regulární výraz ve kterém nahradíme tag za hledaný html tag a novytag za cílový html tag.


Regulární výraz:
<(/?)tag([^>]*)>

Náhrada:
<$1novytag$2>

a pokud bychom chtěli krom html tagu nahradit i atributy je možné to udělat tímto regulárním výrazem kde tag nahradíme hledaným html tagem a atribut atributem jako například class=”priklad”. No a jak jste si již domysleli, tak novytag nahradíme cílovým html tagem.


Regulární výraz:
<(tag)\s+(atribut)>([^<]+)</\1>

Náhrada:
<novytag $2>$3</novytag>

Poslední ukázkou bude nahrazení textu mezi konkrétními tagy. Zde můžeme v náhradě použít buďto pouze nový text nebo alias $1, který se zamění za původní text a tak vlastně nový text rozšířit o ten původní.


Regulární výraz:
<tag>([^<]+)</tag>

Náhrada:
<tag>nový text $1 další nový text</tag>

Vymýšlení a testování regulárních výrazů


Pro vymýšlení a testování regulárních výrazů existuje velké množství různých programů a webových aplikací. Nicméně já mám oblíbený program RegexBuddy, který krom ostatního pomáhá i s implementací regulárního výrazu ve zvoleném jazyce.


regexbuddytiny


Prostředí programu RegexBuddy.Více o tomto programu na webu www.regexbuddy.com.

Žádné komentáře:

Okomentovat