Avatar billede laksen Nybegynder
18. april 2004 - 17:30 Der er 8 kommentarer og
1 løsning

Hjælp til RegExp - validering af e-mail

Jeg har lavet et lille RegExp, der validerer en e-mail adresse.

En del af denne validering ser således ud:
var email = new RegExp("^[a-z0-9][a-z0-9\.\_\-]*@[a-z0-9][a-z0-9\.\-]*\.[a-z]{2,4}$", "i");

Den fungerer fint bortset fra, at den tillader mere end 4 tegn i slutningen, hvor den kun skulle tillade 2 til 4 tegn (eks: nogen@domaene.infox valideres som ok selvom der er 5 tegn efter punktumet).

Hvad gør jeg galt?

Jeg er newbie med RegExp, så jeg modtager gerne andre råd, hvis der er noget, der kan gøre bedre, nemmere osv. :D
Avatar billede roenving Novice
18. april 2004 - 17:54 #1
Du har glemt escape-reglerne for strenge:

var email = new RegExp("^[a-z0-9][a-z0-9\\.\\_\\-]*@[a-z0-9][a-z0-9\\.\\-]*\\.[a-z]{2,4}$", "i");

-- og hvorfor bruger du iøvrigt ikke \w i stedet for a-z0-9 (og den inkluderer jo også _ ?-)

-- og med de nye regler for navne på internettet skal man måske denne vej:

  var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";
  var email = new RegExp("^["+t+"]["+t+"\\.\\-]*@["+t+"]["+t+"\\.\\-]*\\.["+t+"]{2,}$","i");

-- selv top-domænerne kan jo have flere end 4 bogstaver ...
Avatar billede laksen Nybegynder
18. april 2004 - 18:34 #2
Det ser utrolig fornuftigt ud! Hvad nu hvis jeg gør således:

var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";
var email = new RegExp("^["+t+"]["+t+"\\.\\-]*@["+t+"]["+t+"\\.\\-]*\\.["+t+"]{2,}$","i");
var to_specialtegn = new RegExp("[\\.\\_\\-]{2,2}","i");
var snabela = new RegExp("[\\.\\_\\-]@","i");
if(email.test(document.form.email.value)==false || to_specialtegn.test(document.form.email.value)==true || snabela.test(document.form.email.value)==true){
  //Fejl-meddelse...
}

så fanger den vel alle ulovlige e-mail adresse?
Avatar billede roenving Novice
18. april 2004 - 18:46 #3
Du skal i hvert fald lige have global-parameteren med i de to sidste ...

-- og lige lidt oprydning:

var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ";
var email = new RegExp("^["+t+"]["+t+"\\.\\-]*@["+t+"]["+t+"\\.\\-]*\\.["+t+"]{2,}$","i");
var to_specialtegn = new RegExp("[\\.\\_\\-]{2}","g");
var snabela = new RegExp("[\\.\\_\\-]@","g");
var val = document.form.email.value;
if(!email.test(val) || to_specialtegn.test(val) || snabela.test(val)){
  //Fejl-meddelse...
}

-- men ellers ser den zq meget god ud ...

Men test den nu ganske alvorligt !-)
Avatar billede laksen Nybegynder
18. april 2004 - 18:53 #4
Super, tak skal du have! Hvad er forskellen på "i" og "g"?
Du kan bare lægge et svar :D
Avatar billede roenving Novice
18. april 2004 - 19:12 #5
i betyder case-Insensitive (både store og små genkendes), g betyder global (søger i hele strengen, også hvis en match er fundet !-)

-- desuden findes 'm', som betyder at strengen gennemsøges over flere linjer, hvis der er det ...

-- velbekomme '-)
Avatar billede roenving Novice
18. april 2004 - 19:58 #6
-- og tak for point ;~}
Avatar billede laksen Nybegynder
18. april 2004 - 20:10 #7
Det er skam mig dig takker for hurtigt og kompetent svar!
Avatar billede erikjacobsen Ekspert
18. april 2004 - 20:12 #8
Og for at lige at gøre det perfekt, så er her et eksempel på et TLD med mere end
4 tegn: http://nic.museum/  og http://index.museum/
Avatar billede laksen Nybegynder
18. april 2004 - 20:16 #9
Tak for det, så skulle det hele vist være på plads :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging