Autor Zpráva
Měsíček
Profil
Vím, že se to tu už řešilo, ale nemohl jsem to najít a stránky, které se tím zabývají mi taky moc nepomohly .. potřeboval bych udělat regulérní výraz pro zkontrolování e-mailů přičemž podmínky by byly takové :

1.) 1 slovo by mohlo být složeno z Velkých i malých písmen a číslic délka maximálně 25 znaků
2.) pak by byl @
3.) 2 slovo by mohlo být složeno z Velkých i malých písmen a číslic délka maximálně 20 znaků
4.) dále by byla tečka
5.) a nakonec by byla přípona o velikosti maximálně 3 písmen a minimálně dvou (nesmí být číslice)

mohl bych poprosit jestli by mi někdo z Vás řekl výsledek ? Vážně jsem hledal, ale nenašel jsem nikde uspokojivou odpověď .. jinak všem již dopředu děkuji :-)
Měsíček
Profil
jinak vše co jsem dokázal vykutit je tohle :

ereg("[a-zA-Z0-9]+@+[a-zA-Z0-9]+.[a-zA-Z]", $email)

ale pořád nechápu jak udělat třeba maximum 20 znaků atd...

jinak tento had mi povolí klidně i xxxxxx@xx.xx44444
Str4wberry
Profil
Odpovídám Měsíčkovi:
„5.) a nakonec by byla přípona o velikosti maximálně 3 písmen a minimálně dvou (nesmí být číslice)“
Není to pro e-mail trochu nešikovné a omezující?
Bubák
Profil
Na doméně třeba "info" nesmí být maily?
A co:
mesicek-1.nejchytrejsi@1moje-adresa.cz
Měsíček
Profil
mohly by jste mi prosím napsat ten regulérní výraz ? Potom podle možností bych mohl změnit 3 na 4 ..
nightfish
Profil
určitý počet opakování se definuje pomocí {min,max}
např. tedy [a-zA-Z]{3,20}

a jinak tedy jde o výrazy regulární, ne regulérní
Měsíček
Profil
nightfish :

tak proč mi u tohohle prošlo : ereg("[a-zA-Z0-9]+@+[a-zA-Z0-9]+.[a-zA-Z]{2,3}", $email)

tohle : xxxxxxxxx@xxxxxxxxxx.xxxxxxxxxxxxx ?

jinak jaký je rozdíl mezi regulárním a regulérním ?
Měsíček
Profil
no tak přišel jsem na tohle :

[a-z]{2,4} na tohle ohled nebere [a-z]{2,4}$ na tohle už ano ..

takže zatím mám :

ereg("[a-zA-Z0-9]+@+[a-zA-Z0-9]+.[a-zA-Z]{2,4}$",$email);

šlo by to ještě vylepšit ?
DJ Miky
Profil
Nemáš tam kotvení na začátek ( ^ ) a konec ( $ ).


jinak jaký je rozdíl mezi regulárním a regulérním ?

Regulérní výrazy v PHP nejsou :-).
Měsíček
Profil
(!ereg("^[a-zA-Z0-9]+@+[a-zA-Z0-9]+.[a-zA-Z]{2,4}$", $email) dobrá jak mám tedy udělat omezení i pro ten první ? tam když dám {2,5} tak mi to vypíše chybu a nebo mi to nepovolí .. jak to má být správně ?
Retal
Profil
- proč je plusko za zavináčem?
- bacha na tečky, zachycují všechno, ne jen tečku
- e-mail může být na subdoméně
- doménová koncovka může mít více než 4 znaky
- doménové jméno může obsahovat diakritiku
- bacha na nenažranost kvantifikátorů
Měsíček
Profil
PROSÍM mohly by jste mi ukázat hotové řešení ??
Timy
Profil
Bubák
„Na doméně třeba "info" nesmí být maily?“
Jo, .info, ale co třeba .museum? ;-)

Měsíček
http://www.regularnivyrazy.info/email.html Myslím, že když tam doděláš délky jednotlivých jmen (i když nevím, proč délku omezovat), mohlo být to být funkční. Ale je fakt, že to řešení nebere v úbahu některé Retalovy postřehy.

„jinak jaký je rozdíl mezi regulárním a regulérním ?“
Asi stejný rozdíl, jako mezi jahodovou zmrzlinou a jahedovou zmrzlinou.
Měsíček
Profil
to ste mi pomohly ... mě jde o to, že {2,10} tam nemohu u všeho použít prostě mi to nevezme a tak vás jak pako prosím o to, aby jste mi ukázali jak je to správně a je zde už 13 příspěvků a žádná kloudná odpověď na základní otázku jinak z té stránky co jsi mi odkázal jsem udělal jádro ..
nightfish
Profil
ereg("^[a-zA-Z0-9]{1,25}@[a-zA-Z0-9]{1,20}\.[a-zA-Z]{2,4}$", $email)


jinak pokud napíšeš, že ti to nefunguje, tak napiš jaký řetězec to bere/nebere
Měsíček
Profil
Nightfish : děkuji ti tohle jsem hledal od začátku :-)

Jinak skript pro ty kdo to do budoucna budou hledat jako já :

====================================================================== ===

<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="POST">

Zadej e-mail pro zkontrolování : <input type="text" name="email">
<input type="submit" name="OK">
</form>

<?php

if(isset($_POST["OK"])){

if(!ereg("^[a-zA-Z0-9]{1,25}@[a-zA-Z0-9]{1,20}.[a-zA-Z]{2,4}$", $_POST["email"])){

echo("Vaše e-mailová adresa je špatně.");

}

else{
echo("Vaše e-mailová adresa je dobře.");
}


}
?>

====================================================================== ===
Toto téma je uzamčeno. Odpověď nelze zaslat.