Autor Zpráva
Neas
Profil
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
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
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
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 *
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
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
DoubleThink:
Nebyl jsem si jistý, které znaky mají speciální význam a které ne

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0