Možné duplicitné:
Aký je najlepší regulárny výraz na overenie e-mailových adries?
Ahojte všetci,
Mám tento regex / kód na overenie e-mailovej adresy:
var testEmail = /^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/;
if ( testEmail.test(oForm["email"]) == false){
chErrorMessage += "nValid email address";
bSubmit = false;
}
Zdá sa, že kód nevykonáva test správne, či je e-mail správne naformátovaný alebo nie.
Som začiatočník v jazyku JavaScript. Akákoľvek pomoc by sa veľmi ocenila, ďakujem
odpovede:
1 pre odpoveď č. 1Najprv by som týmto spôsobom získal vstupný objekt formulára
document.oForm["email"]
namiesto
oForm["email"]
Potom by ste mali získať hodnotu vstupu, nie samotného vstupu:
document.oForm["email"].value
Ak chcete, spustite podmienený kód true
, nie false
, takže podmienkou by malo byť:
testEmail.test(document.oForm["email"].value) == true
Nie je však príliš elegantné porovnávať booleovskú hodnotu true
alebo false
, pretože samotná porovnávaná hodnota je dostatočná na použitie ako podmienka:
if (testEmail.test(document.oForm["email"].value)) {
// ...
}
Váš kód pre mňa po týchto zmenách fungoval. však, Použil by som riešenie s JQuery, pretože toby sa postaral o všetky nekonečné podrobnosti, ktoré váš regex ignoruje o e-mailoch. OTOH, dúfam, že ste lepšie porozumeli tomu, ako regexy vlastne fungujú v JavaScripte.
HTH
2 pre odpoveď č. 2
Na tento účel používam doplnok na overenie platnosti jQuery: http://docs.jquery.com/Plugins/validation
Podporuje overenie e-mailovej adresy.
0 pre odpoveď č. 3
Vyskúšajte tento kód: -
/**
* DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
*/
function echeck(str) {
var at="@"
var dot="."
var lat=str.indexOf(at)
var lstr=str.length
var ldot=str.indexOf(dot)
if (str.indexOf(at)==-1){
return false
}
if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
return false
}
if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
return false
}
if (str.indexOf(at,(lat+1))!=-1){
return false
}
if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
return false
}
if (str.indexOf(dot,(lat+2))==-1){
return false
}
if (str.indexOf(" ")!=-1){
return false
}
return true
}
function ValidateForm(){
return echeck(document.oForm["email"].value);
}
A nakoniec len zavolajte ValidateForm()
a bez ohľadu na to, akú návratnú hodnotu dostanete, je to platnosť e-mailu!
Na zdravie! : D