Zkuste se, když vyvíjíte zamyslet - co tím chcete získat, je to, co se snažíte řešit, opravdu objektivní problém? Nebo se vám "jenom nezdál něčí email"?
Nebo ta délka někde dělala nějaký problém?
Tohle bych doporučil vytisknout velkými písmeny a jako trest za porušení vytesat do kamene. Pokud něco tvořím, přemýšlím především o tom, kterým omezením uživatele se opravdu nedokážu (z hlediska cena/efekt) vyhnout. Abych si přidělával práci s tím, že budu komplikovat život uživatelům - no, v životě jsem udělal spoustu hovadin, ale tohle asi ne.
Přesně jak tu píše spousta lidí - pokud nemáte extra důvod, použijte pro validaci e-mailu knihovní funkci a nevymýšlejte kolo. A když už, tak ho aspoň nedělejte hranaté, protože kulaté se vám zdá zbytečné.
Obecně s tím souhlasím, je nesmysl vymýšlet si nějaká omezení, která nemají žádné reálné opodstatnění – hrozí akorát to, že někomu bezdůvodně odepřu přístup nebo něco neumožím. (Obzvlášť miluju validace e-mailu, které se snaží podle domény uhodout, zda jde o pracovní nebo soukromý e-mail, takže některé domény odmítají.)
Pozor ale na to, že validace (a zejména ty na frontendu) slouží především pro to, aby upozornily uživatele, když udělá chybu. Třeba kdyby e-mailovou adresu odněkud kopíroval a zkopíroval spolu s ní kus dalšího textu, který není součástí e-mailové adresy. Je potřeba s tím zacházet opatrně, neřešil bych zrovna tohle omezením délky e-mailu, ale někdy jsou podobné validace pro uživatele užitečné.
Dobré je, pokud se takovéhle věci dají řešit varováním – tj. uživatel je upozorněn na to, že jeho vstup možná není správně, ale pokud si to zkontroluje a vstup potvrdí, může ho uložit. Příklad je třeba kontrolní číslice u rodných čísel – desetimístná rodná čísla mají kontrolní číslici, která ale občas byla spočítána špatně. Takže je dobré kontrolní součet ověřit a upozornit uživatele, ať si rodné číslo zkontorluje, zda v něm není překlep. Ale pokud je dotyčný ten chudák, který má rodné číslo se špatnou kontrolní číslicí, přes varování projde dál.