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)?
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.