Autor | Zpráva | ||
---|---|---|---|
Neas Profil |
#1 · Zasláno: 11. 2. 2011, 20:08:04 · Upravil/a: Neas
Ahoj.
Udělal jsem si regulární výraz na kontrolu správně zadaného uživatelského mailu a z něj funkci: return ereg("^[a-zA-Z0-9\-\_\~\!\*\'\|\%\:\+]{1,257}@[a-zA-Z0-9\-\_\~\!\*\'\|\%\:\+]{1,257}\.[a-zA-Z0-9]{2,4}$", trim($email)); a také to funguje, jen když zadám v e-mailu pomlčku, vrací funkce z nějakého důvodu false, i když refulární výraz s pomlčkou počítá (viz. zvýrazněná část). zkoušel jsem výraz takto upravit: return ereg("^[a-zA-Z0-9\-\_\~\!\*\'\|\%\:\+]{1,257}-?[a-zA-Z0-9\-\_\~\!\*\'\|\%\:\+]{1,257}@[a-zA-Z0-9\-\_\~\!\*\'\|\%\:\+]{1,257}\.[a-zA-Z0-9]{2,4}$", trim($email)); ale toto řešení počítá jen s jednou pomlčkou. Děkuji za pomoc |
||
Davex Profil |
#2 · Zasláno: 11. 2. 2011, 21:04:12 · Upravil/a: Davex
Neas
1) Pomlčka má speciální význam. Dávej jí vždy na konec vyjmenovaných znaků [a-zA-Z0-9\_\~\!\*\'\|\%\:\+\-] .
2) Počet opakování definované v {1,257} nemůže být větší než 255.
3) Nepoužívej zastaralou funkci ereg() , ale nahraď jí za preg_match() .
|
||
Neas Profil |
#3 · Zasláno: 11. 2. 2011, 23:16:53
1,2) opraveno, děkuji
3) a regulární výrazy v preg_match() jsou stejné, jako v ereg(), pouze je musím ještě uzavřít mezi ~ a ~ ? (tak pouze soudím z příkladů, které jsem našel) |
||
Davex Profil |
#4 · Zasláno: 12. 2. 2011, 16:20:05
PCRE jsou v základech stejné jako Posixové, ale nabízejí širší možnosti a v některých detailech se liší. Výraz se nemusí uzavírat jen mezi ~, může to být libovolný znak kromě písmena, čísla nebo mezery.
|
||
DoubleThink Profil * |
#5 · Zasláno: 12. 2. 2011, 16:27:42
Davex:
„Pomlčka má speciální význam. Dávej jí vždy na konec vyjmenovaných znaků“ Je escapovaná, takže bez speciálního významu kdekoliv. Neas: Escapuješ hvězdičku, podtržítko, vykřičník atd. - z jakého důvodu? Uvnitř třídy tyto znaky neplní žádnou funkci. |
||
Davex Profil |
#6 · Zasláno: 12. 2. 2011, 16:43:20
DoubleThink:
> „Pomlčka má speciální význam. Dávej jí vždy na konec vyjmenovaných znaků“ > Je escapovaná, takže bez speciálního významu kdekoliv. Pro Posixový regex escapovaná není. |
||
Neas Profil |
#7 · Zasláno: 12. 2. 2011, 20:07:46
DoubleThink:
Nebyl jsem si jistý, které znaky mají speciální význam a které ne |
||
Časová prodleva: 13 let
|
0