Leonard <piper28a@gmail.invalid> writes:
> Hvorfor virker denne ikke:
> function checkEMail(addr) {
> return (/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[a-z]{2,6}$/).test(addr);
> }
Det ligner Javascript. I Javasripts regulære udtryk er der ikke nogen
[:alnum:] forkortelse. Du lbliver nødt til at skrive den ud som
[a-z0-9].
Husk at sætte flaget "i" på det regulære udtryk (eller lave toLowerCase
på adressen før den testes).
Du kan læse specifikationen af Javascript regexp patterns i
ECMAScript-standarden (fx <URL:
http://www.mozilla.org/js/language/E262-3.pdf>)
afsnit 15.10.1
> Når denne virker:
> function checkEMail(addr) {
> return (/^.+@.+\..+/).test(addr);
> }
Fordi den sidste betyder det du tror den betyder, og den første ikke gør.
Desuden er den sidste bedre, fordi den ikke sorterer så meget fra.
Det første udtryk, hvis det havde virket, ville bl.a. udelukke
e-mail-adresser som foo+bar@example.com.
Hvis man skal sortere syntaktisk forkerte input fra, så skal man
sørge for ikke at være for grov i sorteringen. Det er værre at udelukke
folk med en rigtig adresse, end det er at acceptere en forkert.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'