Avatar billede stigc Nybegynder
18. september 2000 - 13:55 Der er 17 kommentarer og
1 løsning

validering af email (haster)

Jeg bruger følgende regulære udtryk til at tjekke en email adresse med:


    if (!document.forms[0].email.value.match(/^\\w[\\w\\.\\-_]*\\w@\\w[\\w\\-_]+(.[\\w\\.\\-_]+)+$/))
   
    {    alert(\"Indtast korrekt email\");
        document.forms[0].email.focus ();
        return false;
            }
   

men den vil ikke acceptere email  med kun 1 tegn før @.
Altså er følgende ikke en korreket email t@test.dk. Det skulle det jo helst være. Hjælp hurtigt!
Avatar billede theartist Nybegynder
18. september 2000 - 13:58 #1
jeg har en anden her til dig som virker...

<script language=\"javascript\">
function gyldigEmail(email) {
    ugyldigeTegn = \"/:,;\"
    if (email == \"\") {
        return false
    }
    for (i=0; i<ugyldigeTegn.length; i++) {
    fejlTegn = ugyldigeTegn.charAt(i)
    if (email.indexOf(fejlTegn,0) > -1) {
        return false
    }
}

paaPos = email.indexOf(\"@\",1)
if (paaPos == -1) {
    return false
}

if(email.indexOf(\"@\",paaPos+1) != -1) {
    return false
}
punktumPos = email.indexOf(\".\",paaPos)
if (punktumPos == -1) {
    return false
}
if (punktumPos+3 > email.length) {
    return false
}
return true
}
function afsendelse(form) {
    if (!gyldigEmail(form.email.value)) {
        alert(\"fejl i e-mail feltet - på den igen\")
        form.email.focus()
        form.email.select()
        return false
    }
    return true
}
</script>


og formen hedder således:
<form method=\"post\" action=\"din action page\" onSubmit=\"return afsendelse(this)\">
Avatar billede geeeet Nybegynder
18. september 2000 - 13:58 #2
Lytter...
Avatar billede phylox2 Nybegynder
18. september 2000 - 13:59 #3
function check_email(address) {
  if ((address == \"\")
    || (address.indexOf (\'@\') == -1)
    || (address.indexOf (\'.\') == -1))
      return false;
  return true;
}

function checkform(){
if (!(check_email(document.formnavn.feltnavn.value))){
  alert(\'Du har ikke indtastet en gyldig email adresse\')
} else {
  document.formnavn.submit()
}
}

<form name=\"formnavn\" onSubmit=\"checkform()\">
<input type=\"text\" value=\"\" name=\"feltnavn\">
</form>

<img src=\"submit.jpg\" onClick=\"checkform()\">

Avatar billede jumper Nybegynder
18. september 2000 - 14:02 #4
Har du prøver med

/^\\w+@\\w+\\.\\w{2,3}$/

altså:

if (!document.forms[0].email.value.match(/^\\w+@\\w+\\.\\w{2,3}$/))

/Thor
Avatar billede jumper Nybegynder
18. september 2000 - 14:03 #5
Forklaring af /^\\w+@\\w+\\.\\w{2,3}$/ :

matcher en streng hvor der kan være 1 eller flere tegn (bruger) hen til et @ efterfulgt af et eller flere tegn (domæne) efterfulgt af et . efterfulgt af 2 eller 3 tegn (tld).

/Thor
Avatar billede jumper Nybegynder
18. september 2000 - 14:04 #6
En tilretning kunne være

/^\\w+@\\w+\\.[A-Z]{2,3}$/i

Dermed kan tld (top level domæne) kun bestå af 2 eller 3 bogstaver.

/Thor
Avatar billede jumper Nybegynder
18. september 2000 - 14:05 #7
Hehe, sjovt som eksperten.dk tror at det regular expression er en email adresse *Gg*

/Thor
Avatar billede jumper Nybegynder
18. september 2000 - 14:09 #8
Og nu hvor vi er ved at tilrette:

/^[\\w\\.]+@[\\w\\.]+\\.[A-Z]{2,3}$/i

Dermed kan bruger og domæne også indeholde . (punktum), hvilket ofte er tilfældet ved sub-domæner, og dermed vil erik.hansen@post1.tele.dk også blive godkendt.

/Thor
Avatar billede erikjacobsen Ekspert
18. september 2000 - 14:42 #9
Pas på med at sætte top-level domains til 2 eller 3 bogstaver,
for der er måske nogle andre på vej (.shop).

Den oprindelige fra spørgsmålet er jo indrettet på den
måde fordi de har tænkt, at et brugernavne hverken
må starte eller slutte på et punktum, men det er
jo gjort forkert, fordi det kræver 2 bogstaver.

Jumpers sidste løsning er knap så restriktiv, men bør have
bindestreg med også. Og hvad med .nu der vist tillader \"skandinaviske\"
tegn.

Iøvrigt virker regulære udtryk kun i JS1.2 - dvs. version
4 browserer og op.
Avatar billede stigc Nybegynder
18. september 2000 - 14:48 #10
tak for alle de gode indælg. Betyder det så at dette
må være at foretrække?

/^[\\w\\.-]+@[\\w\\.-]+\\.[A-Z]{2,3}$/i 
Avatar billede jumper Nybegynder
18. september 2000 - 14:58 #11
Hvis der skal tages højde for at brugernavn og domæne ikke må starte med punktum, kan vi tilrette til :

/^[^\\.]?[\\w\\.-]+@[^\\.]?[\\w\\.-]+\\.[A-Z]{2,3}$/i

[^\\.]? betyder simpelt at der eventuelt kan være et tegn. Hvis der er et tegn, må det ikke være et punktum.

/Thor
Avatar billede jumper Nybegynder
18. september 2000 - 15:59 #12
erik, så var bindestreg og punktum også med.

Hvad angår .nu domæner der tillader \"skandinaviske\" tegn såsom Æ,Æ og Å, kan man ikke gøre så meget. Det er, så vidt jeg husker, i direkte strid med RFC\'en til opbyggelsen af URL\'er.

/Thor
Avatar billede mesterlars Nybegynder
07. december 2000 - 11:15 #13
OK javascript ser da rimeligt svært ud! :)
Avatar billede geeeet Nybegynder
07. december 2000 - 11:38 #14
jumper >> hvad med validering af kinesiske tegn ?!? [hehe :-)]

Nu de har fået lov til at lave deres kinesiske url\'er...

/Geeeet
Avatar billede jumper Nybegynder
07. december 2000 - 15:14 #15
mesterlars, det er ikke alt i Javascript der er så sævrt som regular expressions, bare rolig ;)

geeeet, den med kinesiske tegn er vist nok en helt ny RFC. Ovenstående skulle virke fint med den udbredte email-RFC (som jeg selvf. ikke kan huske nummeret på *G*), men kan vel hurtigt tilrettes med lidt unicode istedet for alfanumeriske tegn.

/Thor (der sidder og svarer geeeets mail :)
Avatar billede geeeet Nybegynder
08. december 2000 - 09:34 #16
>> jumper >> (der sidder og svarer geeeets mail :) >> lækkert >> :-)

/Geeeet
Avatar billede skjoldby Nybegynder
28. december 2000 - 19:38 #17
Jeg ved godt det er en gammel sag, men så vidt jeg kan se så tester den også for underscore i domænet. Et domæne må da ikke indeholde underscore. Det må iøvrigt heller ikke starte eller slutte med bindestreg, eller have to punktummer eller bindestreger i træk.
Avatar billede stigc Nybegynder
28. december 2000 - 19:51 #18
he, he!

Fint nok!
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