16. juni 2011 - 19:59Der er
12 kommentarer og 1 løsning
Reg.Exp - undgå mere end een mailadresse i felt
Hej,
Jeg har følgende check på et felt i en form, som checker om der er tastet en emailadresse ind i form feltet:
var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ"; var regexp = new RegExp("^.*?@["+t+"]["+t+"\\.\\-]*\\.[a-z]{2,6}$","i"); tekst=PW.infoemail.value.toLowerCase();
if (!regexp.test(tekst)||tekst.match(/\.\.|\.@|-@|--/)) {alert ("Der skal stå en gyldig e-mail adresse i tekst feltet. Der må kun tastes een email i dette felt!"); PW.infoemail.focus(); return false;}
Den virker som sådan fint, men jeg har problemet, at hvis brugeren skriver "mor@mor.dk og far@far.dk" i feltet (altså 2 emailadresser), så accepteres dette også.
Hvordan kan jeg sikre, at der kun bliver tastet een emailadresse i feltet (f.eks. mor@mor.dk)?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
enten er det ikke tricket - eller også har jeg rettet det forkerte sted - for med denne: var regexp = new RegExp("^\S*?@["+t+"]["+t+"\\.\\-]*\\.[a-z]{2,6}$","i"); accepterer den slet ikke emailadresse (også selvom den er valid, og at der kun står een emailadresse og ingen blanke)
@johny Jeg er sq ked af det, men jeg kan ikke rigtig få det til at spille (jeg indrømmer - jeg fatter minus af regexp ...)
min kode ser således ud nu:
var t = "\\wáàãââæåçéèêëìíîïñòóôõöøùúûüýÿ"; var regexp = new RegExp(@"^\S*?@["+t+"]["+t+@"\.\-]*\.[a-z]{2,6}$");
tekst=PW.infoemail.value.toLowerCase();
if (!regexp.test(tekst)||tekst.match(/\.\.|\.@|-@|--/)) { alert ("Der skal stå en gyldig e-mail adresse i tekst feltet. Der må kun tastes een email i dette felt!"); PW.infoemail.focus(); return false; }
og nu validerer den slet ikke email adressen .... kan du se hvor det er jeg laver ged i det?
Husk dog at perfekt e-mail validering findes ikke, og der vil også være nogen e-mail adresser som ikke vil komme igennem det filter du har lavet, men så taler vi også marginal tilfælde (under 1 pr. 1.000.000 mail adresser vil jeg skyde på).
Du har helt ret - jeg tror nu, at de fleste relevante (for dette site) vil komme igennem uden problemer.... men ja, e-mail validering er sq for viderekommende ;-)
Jeg må indrømme at jeg ikke ved om det her virker i javascript, men du kunne overveje at tilføje følgende lige efter '^' tegnet: (?!.*(?:\\.\\.|\\.@|-@|--))
Så slipper du for at lave de ekstra parsninger du også laver (tekst.match(/\.\.|\.@|-@|--/)).
Synes godt om
Ny brugerNybegynder
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.