Starší komentáře ke článku: Regulární výrazy v příkladech

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: spud

Datum vložení: 12.12.2001 8:20:58

email muze zacinat i na "plusko"
+420603123456@sms.paegas.cz
tento byraz neprojde ...

Avatar

Autor komentáře: R. Caha

Datum vložení: 12.12.2001 12:28:56

V adrese pred @ lze mit i procento.
Na druhou stranu je spravne i adresa
nekdo@[192.168.0.1]

Avatar

Autor komentáře: Jiří Semecký

Datum vložení: 14.12.2001 15:11:01

Ano, mate pravdu, omlouvam se za tu nepresnost.

Podle RFC mohou byt pred zvinacem cislice, pismena a znaky -!#$%&'*+/=?^_`{|}~
pak jeste tecka, ale nesmi bzt 2x za sebou, takze spravny RV na kontrolu emailu je:

^[-a-zA-Z0-9!#$%&'*+/=?^_`{|}~]+(\.[-a-zA-Z0-9!#$%&'*+/=?^_`{|}~]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$

Avatar

Autor komentáře: Martin Kopta

Datum vložení: 19.12.2001 2:07:23

Aha, a nevadi, ze *, + a ? jsou znaky se zvlastnim vyznamem? Nemely by byt predchazeny zpetnym lomitkem jako \*\+\? treba?

Avatar

Autor komentáře: Jiří Semecký

Datum vložení: 11.1.2002 11:08:19

Nevadí, v seznamech (v hranatých závorkách) znaky ztrácí svůj zvláštní význam.
Seznam je prostý výčet znaků a vždy zastupuje právě jeden znak, takže tam žádné speciální znaky nefungují.

Avatar

Autor komentáře: viktor

Datum vložení: 10.3.2002 12:08:10

dobry den.
ako by mal podla vas vyzerat regularny vyraz pre testovanie vstupu na cislo, ktore musi mat presne n cislic?
ja som skusal tento [0-9]{n} kde n je pocet cislic
ale "pusti" mi to aj vasci pocet cislic
dik za odpoved

Avatar

Autor komentáře: viktor

Datum vložení: 10.3.2002 12:12:27

uz to mam sorry za zbytocny prispevok
mal som pozornejsie citat

Avatar

Autor komentáře: Jiří Semecký

Datum vložení: 27.3.2002 15:29:27

To je v pořádku, jen ještě pro ostatní:
RV pro n-ciferné číslo: ^[0-9]{4}$
RV pro řetězec, který obsahuje n-ciferné číslo: [0-9]{4}

Avatar

Autor komentáře: kriplozoik

Datum vložení: 28.6.2002 11:01:41

jaky je RV pro den data?
ten priklad v clanku umoznuje zadat napr. 39 (39.12.2001), coz je evidentne blbe

Avatar

Autor komentáře: Jiří Semecký

Datum vložení: 8.7.2002 1:52:54

regularni vyraz pro datum pro MySQL je
<I>^[0-9]{4}-((0?[0-9])|(1[012]))-(([0-2]?[0-9])|(3[01]))$?</I>
jak je uvedeno v clanku. V tokovem vyrazu je nejdrive rok, potom mesic, potom den (tedy napr. 2002-07-08). Vami uvadene datum 2001-12-39 tomuto RV NEvyhovuje.
Jediny problem by mohl byt 2002-11-31, takovy RV projde, ikdyz ten den neni, ale takove datum lze zadat i do MySQL :)
Zcela korektni RV pro datum (vcetne prestupnych roku) by byl tak na 20 radku :-) a asi je jednodussi to pak testovat jinak.

Avatar

Autor komentáře: Jiří Semecký

Datum vložení: 8.7.2002 1:55:28

Pardon, bez toho otazniku na konci...
<I>^[0-9]{4}-((0?[0-9])|(1[012]))-(([0-2]?[0-9])|(3[01]))$</I>

Avatar

Autor komentáře: Screamer

Datum vložení: 28.2.2004 19:21:06

To uz je lepsi, si to rucne rozdelit(napr.: explode('.',$datum))
a pak testovat kazde cislo zvlast, protoze treba 31.2. byt taky nemuze...

Avatar

Autor komentáře: Jirka

Datum vložení: 28.1.2006 18:40:12

v PHP existuje funkce pro kontrolu, zda zadane datum je platne, takze to navic prohnat pres to.. nazev je myslim check_date nebo tak nejak podobne

Avatar

Autor komentáře: Airie

Datum vložení: 8.7.2003 14:50:09

chci se zeptat jak se zapisuje do regularnich vyrazu mezera. To se muze hodit treba v momente kdy potrebuju v db hledat treba nazvy alb nejdrive zacinajici a-j a potom k-z. Kdyz zapisu normalbne mezeru akceptuje ji??

Avatar

Autor komentáře: Jiri Semecky

Datum vložení: 8.7.2003 14:53:13

Ano, mezera nema specialni vyznam, takze normalne napiste mezeru.

Avatar

Autor komentáře: Screamer

Datum vložení: 8.3.2004 18:46:18

mam tento vyraz na kontrolu PSC: '^[0-9]{3} ?[0-9]{2}$'
ale neprojde mi ani '123 45' ani '12345'
nevite cim to?teprve s regulernimi vyrazy zacinam

Avatar

Autor komentáře: Goos

Datum vložení: 3.12.2003 17:35:14

Byl by nekdo tak ochotny a ukazal mi regularni vyraz ktery kontroluje nazev domeny? tzn: "domena.cz" projde kontrolou, "www.domena.cz" a "<a href='http://www.domena.cz"' target='_blank'>http://www.domena.cz"</a> kontrolou neprojde.

S diky Goos

Avatar

Autor komentáře: Jiří Semecký

Datum vložení: 4.12.2003 9:35:33

To nechapu "www.domena.cz" je stejně dobrý název domény jako "domena.cz", jen je to domená druhé úrovně místo třetí.
Na doménu 2. úrovně bych použil "^[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+$".
Na obecnou doménu pak "^[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$".
Až se zavedou domény v unicodu, trochu se to zkomplikuje :-)
-js

Avatar

Autor komentáře: Screamer

Datum vložení: 28.2.2004 19:24:35

funguji regulerni vyrazy i v dotazu na MySQL?

Avatar

Autor komentáře: Jiri Semecky

Datum vložení: 28.2.2004 22:18:27

Pokud vim, tak ne. Alespon ve verzi 3 to nebylo, ale je mozne ze to nekdy nekdo naimplementuje.
Syntaxe by se pak ale mohla trochu lisit (ale vyjadrovaci sila by byla stejna).
Asi by to dost vytezovalo DB server, ale napad to neni spatny...

Avatar

Autor komentáře: Koudis

Datum vložení: 5.3.2004 22:20:56

jak muzu treba zjistit pomoci regularnich vyrazu v textu www adresu a nahradit ji odkazem ?

Avatar

Autor komentáře: Screamer

Datum vložení: 23.7.2004 14:13:22

prosim vas, kdyz chci nahrazovat nektere slova pomoci ereg_replace() v textu, ktere se ale nesmi nachazet v hranatych zavorkach, jak by to asi vypadalo? uz se s tim paru aspon 4 kodiny

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 23.7.2004 14:21:01

Prosím, nespamujte články nesouvisejícími dotazy, použijte Interfórum - <a href='http://interforum.interval.cz' target='_blank'>http://interforum.interval.cz</a> ;-)

Avatar

Autor komentáře: Pavel Lisa

Datum vložení: 22.4.2006 17:41:44

$puvodni = FOpen ("book.dat" , "r"); $write2 = ereg("^(SM01){1}$", $puvodni); $write3 = ereg_replace("^(SM01){1}$", "(img){1}", $write2); if (File_Exists ("book.dat")): $write4 = $write3 ; $fileedit = FOpen ("book.dat" , "w") ; FWrite ($fileedit, $write4) ; FClose ($fileedit) ; endif; if (File_Exists ("book.dat")): $fp = FOpen ("book.dat" , "r") ; FPassThru ($fp) ; endif ; Nefunguje mi to. Na stránce se nic nezobrazí. Neví někdo, co s tím může být?

Avatar

Autor komentáře: Fox

Datum vložení: 1.4.2007 15:20:00

Je to bezva, ale vezme to i třeba 2000-00-00 což je nutého nultý 2000. Doufám, že už to tu někdo neřekl *oops* Jsem jenom amatér, ale udělal jsem následující: "^([0-9]{2}(((0?[1-9])|(1[012]))| ((5?[1-9])|(6[012]))) (([0]?[1-9])|([1-2]?[0-9])|(3[01])) /[0-9]{3,4})$" Pokud vytvoříte lepší, rád se přiučím.

Avatar

Autor komentáře: Tonda

Datum vložení: 23.8.2008 15:45:19

^(20[0-9]{2})\-(0[1-9]{1}|1[0-2])\-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$ Je to podle mého přesnější Tonda

Avatar

Autor komentáře: Michal

Datum vložení: 11.12.2008 14:54:09

Moooooooc dobry..... konecne jsem nasel RV..... pekne popsany

Zpět na článek | Úvodní stránka Interval.cz