2011-02-17 1 views
0

J'ai un script écrit il y a longtemps par un pigiste qui a bien fonctionné jusqu'à maintenant. Le script vérifie simplement l'adresse e-mail d'un formulaire par rapport à certaines règles correspondantes et renvoie true/false. Le problème est pour une raison quelconque, il ne reconnaît pas une adresse e-mail qui a une syntaxe très simple [email protected] (pas de périodes ou caractères supplémentaires, etc).Adresse e-mail non reconnaissable à partir de la validation javascript

Je ne comprends pas javascript et je comprends PHP donc si quelqu'un pouvait me dire pourquoi ce script retournerait faux contre une adresse e-mail formatée comme je l'ai indiqué ci-dessus, je l'apprécierais grandement.

function check_email(str) { 
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/; 
    if (!str.match(re)) { 
    return false; 
    } else { 
    return true; 
    } 
} 
+3

Il est faux de tant de manières et a besoin de la mise à jour . Utilisez celui trouvé ici: http://stackoverflow.com/questions/46155/validate-email-address-in-javascript –

+1

aussi, cela pourrait être refactorisé à 'return str.match (re)'. Gardez votre tunnel de carpelle jusqu'à ce que vous soyez plus âgé. –

+0

@Shane lequel? il y a des tonnes sur cette question. –

Répondre

0

Cela devrait fonctionner, le RegExp est valide. Etes-vous sûr que votre email est réduit d'espaces à la fin/au début? si quelqu'un laisse un espace de fin à la fin ou en suspend une au début, cela ne fonctionnera pas car il n'accepte que des caractères alphanumériques au début et des caractères a-zA-Z à la fin (domaine). Les espaces blancs sont la seule chose que je peux venir avec qui peut le casser.

Et vous pouvez factoriser un peu et de raccourcir revenir simplement la valeur de match, il retourne un tableau de correspondances ou nul (ce qui équivaut à false dans comparisions)

function check_email(str) { 
    return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/); 
} 
+0

merci; Je pensais que les espaces blancs pourraient aussi être un problème. –