Avatar billede gregorian Nybegynder
13. januar 2005 - 21:59 Der er 16 kommentarer og
1 løsning

hjælp til regexp

Hvordan validerer jeg en emailene på denne streng?

var emails = michael@hotmail.com,kenneth@gmail.dk, bla@bla.bla osv

min streng kan fortsætte sådan i lang tid. hvordan tjekker jeg om emailene er i korrekt format? er det ikke med regular expresions (regexp) og hvordan gør man?
Avatar billede morteeart Nybegynder
14. januar 2005 - 00:49 #1
Denne her regex checker om en email er valid:

/([0-9a-zA-Z-\.]+)@+([0-9A-Za-z-\.]+)\.+([a-zA-Z]+)/
Avatar billede roenving Novice
14. januar 2005 - 10:34 #2
Næh, for den godtager f.eks. karl.bay.@@kljgh-..jhgjhgjkhkhjkh

Prøv i stedet med: /[a-z][\da-z-\.]+@[a-z][\da-z-\.]\.[a-z]{2,6}/i som kun efterlader fejlmulighederne, som inkluderer flere specialtegn efter hinanden omkring @-tegnet og punktummer og streger efter hinanden (og så er der for nuværende kun top-domæner med mellem 2 og 6 bogstaver !-)
Avatar billede gregorian Nybegynder
14. januar 2005 - 11:45 #3
Roenving:
den kan ikke validere
  "michael@auchenberg.dk"
    eller
  "michael@auchenberg.dk,m_auchenberg@hotmail.com"
som jeg gerne skulle have den til.

morteeart:
michael@auchenberg.dk,m_auchenberghotmail.com  <= ingen fejl selvom der mangler @
michael@auchenberg.dk,m_auchenberg@hotmail.com <= validere som den skal - OK
michael@auchenberg.dk <= validere som den skal - OK
michaelauchenberg.dk <= validere som den skal - OK

der er stadigvæk en fejl når den hedder
michael@auchenberg.dk,m_auchenberghotmail.com hvor de er adskilt med komma.
Avatar billede gregorian Nybegynder
14. januar 2005 - 11:49 #4
rettelse til roenving (se bort fra den ovenover)
michael@auchenberg.dk,m_auchenberg@hotmail.com <== validere den som fejl.
michael@auchenberg.dkm_auchenberg@hotmail.com <= validere som den skal - OK
michael@auchenberg.dk,m_auchenberghotmail.com <= validere som den skal - OK
michael@auchenberg.dk <= validere som den skal - OK
michaelauchenberg.dk <= validere som den skal - OK

den melder altså også fejl når michael@auchenberg.dk,m_auchenberghotmail.com er adskilt med komma.
Avatar billede morteeart Nybegynder
14. januar 2005 - 11:56 #5
ved ikke det med kommaerne, men denne her:

/([0-9a-zA-Z-\.]+)@{1}([0-9A-Za-z-]+)\.+([a-zA-Z]+){2,6}/

så checker den for kun ET @, og at domæne skal være 2-6 cifre (vidste ikke det med at man kunne lave længer i regex)

Men mange skriver Hej@Hej.Dk , og det skal jo ikke valideres fejl ,derfor A-Z i domænenavn.
Avatar billede roenving Novice
14. januar 2005 - 11:58 #6
Noget af det er noget vrøvl, morteeart, bl.a. fordi du bruger grupperinger for meget, men prøv:

/[\w-\.]+@([\w-]+\.)+[a-z]{2,6}/
Avatar billede gregorian Nybegynder
14. januar 2005 - 12:01 #7
michael@auchenberg.dk,m_auchenberg@hotmail.com <== validere som den skal - OK
michael@auchenberg.dkm_auchenberg@hotmail.com <== validere IKKE som den skal. melder ikke fejl her.
michael@auchenberg.dk <== validere som den skal - OK
michaelauchenberg.dk <== validere som den skal - OK

den eneste fejl nu er at der ikke tjekker om der er komma imellem de 2 mails.
Avatar billede gregorian Nybegynder
14. januar 2005 - 20:54 #8
roenving.. har jeg endelig fundet et spørgsmål du ikke kan svare må ;)
det må jeg nok sige, det sker ikke tit. hihi
Avatar billede roenving Novice
16. januar 2005 - 15:38 #9
Der mangler jo start og slut ...

/^[\w-\.]+@([\w-]+\.)+[a-z]{2,6}$/
Avatar billede gregorian Nybegynder
16. januar 2005 - 16:01 #10
det virker ikke helt endnu
michael@auchenberg.dk,m_auchenberg@hotmail.com <== <== validere den som fejl.
michael@auchenberg.dkm_auchenberg@hotmail.com <= validere som den skal - OK
michael@auchenberg.dk,m_auchenberghotmail.com <= validere som den skal - OK
michael@auchenberg.dk <= validere som den skal - OK
michaelauchenberg.dk <= validere som den skal - OK

der mangler stadigvæk det med kommaet der adskiller. skal man ikke bare tillade at der må være komma hvor det hele? så den er vel løst, eller giver det nogle andre problemer?
Avatar billede roenving Novice
16. januar 2005 - 16:04 #11
Så bliver du nødt til at gruppere og fordoble valideringen, f.eks.

/^([\w-\.]+@([\w-]+\.)+[a-z]{2,6}\,)*[\w-\.]+@([\w-]+\.)+[a-z]{2,6}$/
Avatar billede gregorian Nybegynder
16. januar 2005 - 17:00 #12
hmm. det dur jo ikke. for kender jo ikke antal af emails i min variablen. det kan være alt fra 1 til 500.

kan det ikke lade sig gøre i regexp alene så?
hmm. så må jeg bruge split og dele dem op, validere og samle dem igen
Avatar billede roenving Novice
16. januar 2005 - 17:49 #13
Nej, for den ovenstående siger, at den godkendes, hvis der evt. er en email-adresse foran efterfulgt af et komma, og altid slutter med en email-adresse, så den vil acceptere fra 1- uendeligt antal email-adresser, hvis de adskilles med kommaer !-)

* betyder nul eller flere gange !o]
Avatar billede gregorian Nybegynder
16. januar 2005 - 17:53 #14
perfekt roenving. testede den ikke engang da jeg åbentbart misforstod det du skrev..

hehe..

troede faktisk lige jeg havde stillet et spørgsmål du var kommet tvivl om, men må da se mig slået igen igen.
vil du have points`?
Avatar billede roenving Novice
16. januar 2005 - 18:08 #15
-- og hvis du også vil godtage semikolonner (og store bogstaver i top-domænet !-) kan du:

/^([\w-\.]+@([\w-]+\.)+[a-z]{2,6}[;,])*[\w-\.]+@([\w-]+\.)+[a-z]{2,6}$/i

Velbekomme '-)
Avatar billede gregorian Nybegynder
18. januar 2005 - 23:31 #16
vær så god.. troede faktisk at jeg havde accepteret
Avatar billede roenving Novice
19. januar 2005 - 14:08 #17
Tak for point ;~}
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