/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Regular expressions (email)
Fra : Martin Hintzmann And~


Dato : 17-12-03 14:59

Hej NG

Jeg er ikke så go' til regular expressions, så derfor spørger jeg her.

- Er der huller i denne email validering ?

function isValidEmailAddress(s) {
var temp = s.replace(/\s/g, "")
return (temp.match(/^[\w\.\-]+\x40[\w\.\-]+\.\w{2,3}$/)) &&
   temp.charAt(0) != "." && !(temp.match(/\.\./))
}

Hintzmann c",)

 
 
Lasse Reichstein Nie~ (17-12-2003)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 17-12-03 19:06

Martin Hintzmann Andersen <no@spam.dk> writes:

> Jeg er ikke så go' til regular expressions, så derfor spørger jeg her.
>
> - Er der huller i denne email validering ?

Hvis du fortalte os hvad den forventes at genkende (med ord!), så ville
det være meget nemmere at afgøre om dit regulære udtryk matchede dette.
Nu kan vi kun (med besvær) se hvad du faktisk matcher mod, ikke om
det er rigtigt.

Det er også bedst hvis man ikke behøver læse subject for at forstå
teksten :)

> function isValidEmailAddress(s) {
> var temp = s.replace(/\s/g, "")
> return (temp.match(/^[\w\.\-]+\x40[\w\.\-]+\.\w{2,3}$/)) &&
>    temp.charAt(0) != "." && !(temp.match(/\.\./))

Dette regulære udtryk matcher en streng på formen:

et eller flere af enten et "ord-tegn" (tal og bogstaver - inklusiver
internationale bogstaver!), punktum eller minus.
efterfulgt af
Tegnet med ASCII-værdien 64, altså @
efterfulgt af
et eller flere af enten et "ord-tegn", punktum eller minus.
efterfulgt af
et punktum
efterfulgt af
to eller tre ord-tegn.

Derefter tjekkes at der ikke startes med "." eller indeholder to "."'er
i træk.

Er det det du vil?

Det er ikke en særlig god tjek af om det er en lovlig e-mail-adresse!
Følgende, fuldt lovlige, e-mail-adresser vil ikke blive accepteret:
foo@example.info
foo+bar@example.com
foo@[127.0.0.1]
foo@[smtp.example.com]

Det er *forbandet* svært at teste for e-mail-adresser, fordi rigtigt meget
faktisk er lovligt. Personligt anbefaler jeg følgende:
/@.+\./
Altså: indeholder snabel-a og punktum, i nævnte rækkefølge og med
noget imellem. Og jeg er ikke helt sikker på at punktummet er påkrævet.

Husk, at en falsk negativ er til *gene* for brugeren, hvis han ikke
får sin, fuldt lovlige, adresse accepteret. Hvis en skurk på den anden
side gerne vil indtaste noget der ikke virker, så er
bill.gates@microsoft.com jo altid god, så det stopper din test ikke
alligevel.

Hvis du gerne vil vide hvad lovlige e-mail-adresser er, så tjek
RFC-2822, afsnit 3.4.1. Du vil nok blive overrasket over hvad der
er lovligt.

/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.'

Martin Hintzmann And~ (17-12-2003)
Kommentar
Fra : Martin Hintzmann And~


Dato : 17-12-03 21:05

Lasse Reichstein Nielsen wrote:
>
> Hvis du fortalte os hvad den forventes at genkende (med ord!), så ville
> det være meget nemmere at afgøre om dit regulære udtryk matchede dette.
> Nu kan vi kun (med besvær) se hvad du faktisk matcher mod, ikke om
> det er rigtigt.
>

Det er en sammen stykning af forskelligt regular expressions til emails
jeg har fundet rund omkring. Så jeg ved faktisk ikke 100% hvad det
matches mod.

> Det er også bedst hvis man ikke behøver læse subject for at forstå
> teksten :)
>

Ikke helt forstået det med subject, da jeg syntes at det står klart i
min post at det er en email validering. Men okay

[Snip min regular expressions og din forklaring af den ]

>
> Er det det du vil?
>

Ja, det var som sådan det jeg ville.


> Det er ikke en særlig god tjek af om det er en lovlig e-mail-adresse!
> Følgende, fuldt lovlige, e-mail-adresser vil ikke blive accepteret:
> foo@example.info

Ja, jeg tjecker jo kun på 2-3 tegn endelse.

> foo+bar@example.com
> foo@[127.0.0.1]
> foo@[smtp.example.com]

De resterende har jeg heller ikke lige tænkt på.

>
> Det er *forbandet* svært at teste for e-mail-adresser, fordi rigtigt meget
> faktisk er lovligt. Personligt anbefaler jeg følgende:
> /@.+\./
> Altså: indeholder snabel-a og punktum, i nævnte rækkefølge og med
> noget imellem. Og jeg er ikke helt sikker på at punktummet er påkrævet.
>


Perfekt. Den vil jeg bruge. Man skal jo "Keep It Simpel, Stupid!".

> Husk, at en falsk negativ er til *gene* for brugeren, hvis han ikke
> får sin, fuldt lovlige, adresse accepteret. Hvis en skurk på den anden
> side gerne vil indtaste noget der ikke virker, så er
> bill.gates@microsoft.com jo altid god, så det stopper din test ikke
> alligevel.
>

Jeg har lavet det sådan at man modtager en "accept-mail", så skurkene er
ikke mit store problem.

> Hvis du gerne vil vide hvad lovlige e-mail-adresser er, så tjek
> RFC-2822, afsnit 3.4.1. Du vil nok blive overrasket over hvad der
> er lovligt.
>

Ja, det er ikke så lidt.
http://www.faqs.org/rfcs/rfc2822.html

Tænkte nok at hvis nogen kunne svare var det dig, Lasse
Jeg nupper den simple /@.+\./

Tak for hjælpen

Hintzmann c",)


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste