JS Ověření emailové adresy funkcí test

## Ověření emailové adresy funkcí test

Váš email

+ (vyhovuje) : joe_smith@here.com, a@a.aa, 0@0.aa
+? (vyhovuje, ale neměl by) : ...@...aa, -@-.aa, a@-.aa
-? (nevyhovuje, ale měl by) : me@24.111.232.1, u-s_e.r1@s-ub2.domain-name.museum:8080
- (nevyhovuje) : abc#def@aaa.cz

### Co se má stát?

Po kliknutí na tlačítko "Vyzkoušet" se ověří správnost emailové adresy zadaná v políčku "Email". Pokud ano, pak se formulář odešle. Jestliže ne, pak se vypíše alert hláška a formulář se neodešle.

Regulární výraz:
`^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$`

Vysvětlení a schéma:
`AZaz09-_.(1-n) @ AZaz09-_.(1-n) . AZaz (2-4)`
Text začíná znaky Azaz09-_. v množství 1 až nekonečno, pak následuje zavináč, dále znaky Azaz09-_. opět 1 až nekonecno krát, tečka, Azaz 2 až 4 krát.

Jenže pravidla říkají, že `e-mailAddress[64]@domainName[255]` , délka před zavináčem max. 64, délka za 255 (v rozporu s nekonečnem), texty před a za mohou obsahovat i další znaky (vlnovku), doména může být zapsána číselnou formou (může usnadnit psaní dlouhého jména domény), za domenou může být port (spíše využívá správce serveru), server domény může mít 2-9 znaků (nikoliv 2-4), ... Některé z těchto kombinací jsou vypsány pod formůlářem, na kliknutí se vyplní.

Je pravda, že správci serverů obvykle připouší mail ve tvaru: jmeno.prijmeni@domena.com, jmeno-prijmeni@domena.cz a JmenoPrijmeni@domena.cz . Čili použitý regulární výraz je dostačující pro javascript, na straně PHP bych použil přísnější kontrolu.

Jiný regulární výraz:
`^[a-zA-Z0-9]+([_\.\-][a-zA-Z0-9]+)?@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,6}$`
Tento výraz je podobný prvnímu, ale omezuje některé kombinace z řádku "vyhovuje, ale neměl by" a přidává některé kombinace k řádku "nevyhovuje, ale měl by" .

### Související odkazy

- RFC2821
- RFC2822
- RFC3986
- Regulární výrazy pro JS na VisiBone (EN)
- Regulární výrazy pro JS na RegExpLib (EN)
- Regulární výrazy pro JS na RegExp (CZ)