Avatar billede killer_r Nybegynder
11. august 2004 - 23:43 Der er 20 kommentarer og
2 løsninger

Tjek emails - fejl i RegExp

Jeg har følgende pattern til at tjekke email-adresser:

oRegExp.Pattern = "^([\w]{1}[\w-\.]+[^\.]@{1}[^\.][0-9a-z-\.]+\.[a-z]{2,4})$"

Men det ser ud til at den har et problem med adresser med kun to bogstaver før @... f.eks. xx@mail.dk
Hvad skal pattern'et være for at disse også kommer med...?
Avatar billede roenving Novice
12. august 2004 - 00:12 #1
Som jeg umiddelbart kan gennemskue det må du teste selvstændigt for de ulovlige forekomster af . og - umiddelbart foran (og efter !-) @-tegnet, og så have det grundlæggende check til at være:

oRegExp.Pattern = "^(\w[\w\.-]*@\w([\w-]\.)*[\w-]?\.[a-z]{2,}$"
Avatar billede eagleeye Praktikant
12. august 2004 - 01:22 #2
Du kan lave + om til * og sætte {0,1} før @'et, så skulle den vist være der:

oRegExp.Pattern = "^([\w]{1}[\w-\.]*[^\.]{0,1}@{1}[^\.][0-9a-z-\.]+\.[a-z]{2,4})$"
Avatar billede eagleeye Praktikant
12. august 2004 - 01:30 #3
hmm det dur hvis ikke, jeg er vist for træt til den slaks lige nu.. Det skal være:
oRegExp.Pattern = "^([\w]{1}[\w-\.]*[^\.]{1}@{1}[^\.][0-9a-z-\.]+\.[a-z]{2,4})$"

men så godkender den ikke mail adreser med en karakter foran @'et hvis de findes
Avatar billede eagleeye Praktikant
12. august 2004 - 01:37 #4
Jeg har selv brugt denne, den acceptere både en og to karakter før @'et:
oRegExp.Pattern = "^\w+([-+.]\w+)*@{1}\w+([-.]\w+)*\.\w+([-.]\w+)*$"

Man kunne kombinere de sådan her:
oRegExp.Pattern = "^\w+([-+.]\w+)*@{1}[^\.][0-9a-z-\.]+\.[a-z]{2,4}$"
Avatar billede roenving Novice
12. august 2004 - 14:07 #5
Nu er mail-adresser jo ret irriterende at teste med en enkelt regexp, men dog meget nemmere at gå til, end med andre metoder, så man kan udvikle dem til nogle ret lange udtryk, hvis de skal tage højde for alle eventualiteter, men eagleeyes sidste har i hvert fald den mangel, at flere skilletegn ikke tillades foran @ og mange mærkelige (og ugyldige !-) tegn tillades lige efter ...

"^(\w([\w\.+-]*\w|)@\w([\w-]\.)*[\w-]?\.[a-z]{2,}$"

-- stadig vil enkelte gyldige falde udenfor og enkelte ugyldige slippe igennem, men så skal man til at splitte de rare []-operatorer op og lave almindelige eller-konstruktioner med | !-)
Avatar billede roenving Novice
12. august 2004 - 14:08 #6
-- og spørgsmålet om alle de sprog-specifikke tegn, som er lovliggjort idag er heller ikke berørt !o]
Avatar billede killer_r Nybegynder
12. august 2004 - 14:50 #7
Nu spørger jeg måske dumt... Men er der ikke nogen der har en RegExp liggende der måske er lang og besværlig, men som beskriver E-Mails 100% korrekt? Det ville altså være top-nice!
Avatar billede erikjacobsen Ekspert
12. august 2004 - 14:51 #8
check www.ljweb.com - useful scripts
Avatar billede killer_r Nybegynder
12. august 2004 - 14:54 #9
Det erikjacobsen siger er altså at denne kan beskrive alle email-adresser:
oRegExp.Pattern = "/^[\w]{1}[\w\.\-_]*@[\w]{1}[\w\-_\.]*\.[\w]{2,6}$/i"

eller hvad?
Avatar billede killer_r Nybegynder
12. august 2004 - 14:54 #10
Uden /i!
Avatar billede eagleeye Praktikant
12. august 2004 - 15:02 #11
Problemet er at der er så mange måder at skrive en gyldig email adresse på at man må nøje med at få de værste fejl fjernet.
Avatar billede erikjacobsen Ekspert
12. august 2004 - 15:05 #12
Jeg siger ikke Lars' er perfekt - bare et forslag.

Man kan gå den anden vej og sige, at der skal være præcis éet @ med noget på begge
sider. Den holder nok et stykke tid ud i fremtiden, men vil ikke sortere alle
ulovlige fra. Så det afhænger af hvad målet med testen skal være.
Avatar billede roenving Novice
12. august 2004 - 15:32 #13
-- og så lige en generel syntaks-kommentar:

{1} vil altid være overflødig, da den gentager definitionen af antallet ...
Avatar billede eagleeye Praktikant
12. august 2004 - 15:40 #14
Avatar billede eagleeye Praktikant
12. august 2004 - 16:22 #15
roenving >>  at flere skilletegn ikke tillades foran @
Øh det gør den da, den tillader bare ikke to eller flere skilletegn lige efter hinanden. Den du viser accepter denne:  ab....c@xx.dk
Avatar billede roenving Novice
12. august 2004 - 16:33 #16
>>eagleeye

Undskyld, der havde jeg ikke kigget ordentligt efter ...

Den anden holder desværre, at man kan placere ulovlige tegn efter @-tegnet, f.eks. @ !-)
Avatar billede erikjacobsen Ekspert
12. august 2004 - 19:44 #17
Og hvorfor skulle  ab....c@xx.dk ikke være lovlig ?
Avatar billede killer_r Nybegynder
13. august 2004 - 19:49 #18
Jeg brugte det link eagleeye lagde! Det så ud til i hvert fald og løse problemet og være ganske præcist til at beskrive links...
Men der var jo egentlig flere med "den rigtige løsning"... Hvordan fordeler vi pointene?
Avatar billede eagleeye Praktikant
13. august 2004 - 23:52 #19
Først skal vi laver et svar :)
Du kunne dele dem ligelidt imellem os :)
Avatar billede killer_r Nybegynder
14. august 2004 - 14:47 #20
Tja... Glimrende idé... ;o) Læg lige et svar...
Avatar billede roenving Novice
14. august 2004 - 14:51 #21
Oki '-)
Avatar billede roenving Novice
07. september 2004 - 01:12 #22
-- og 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
Kurser inden for grundlæggende programmering

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