Mõni aeg tagasi panin üles a Parooli tugevuse kontrollija JavaScripti ja regulaaravaldiste abil. Samal märkusel saate kontrollida sama e-posti aadressi struktuuri, kasutades sama regulaaravaldise (regex) metoodikat.
Kui teie vormielemendis on id = ”e-posti aadress” ja lisate vormi onSubmit = ”return checkEmail ();", See on Javascripti funktsioon, mida saate kasutada teate tagastamiseks, kui e-posti aadress on kehtiva struktuuriga või mitte:
function checkEmail() { var email = document.getElementById('emailaddress'); var filter = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; if (!filter.test(email.value)) { alert('Please provide a valid email address'); email.focus; return false; } }
Funktsioon kinnitab meilisisu filtri omaga. Kui võrdlus ebaõnnestub, ilmub see hoiatus ja naaseb fookuse tagasi e-posti aadressi väljale!
Mitme meiliaadressiga vormide puhul oleks hea teha class=”emailaddress”. Kui teil on prototype.js teek (http://www.prototypejs.org) saate teha midagi sellist:
var kehtiv = tõene;
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
$$('.emailaddress').each( function(email) {
if (!filter.test(email.value)) {
alert(?Palun sisestage kehtiv e-posti aadress?);
email.focus;
kehtiv = vale;
}
});
tagastus kehtiv;
Aitäh Ade! Ma pean klasside ja JavaScripti kohta rohkem teada saama!
Dougi esialgne näide oli lahe, kuid see on külm! Ma ei teadnud, et saate sellisel viisil töödelda elemente, millel on klass, ja funktsionaalne süntaks on magus.
Ade ja tema meeskond on hämmastavad!
Tore, võin teile alati mõne kurja laheda stsenaariumi puhul loota! 🙂
Aitäh Tony!
Mulle meeldib see idee, kuid ma kõhkleksin selle konkreetse regulaaravaldise kasutuselevõtmisega, kirjeldamata, milliseid juriidilisi e-posti aadresse see ei aktsepteeri ja milliseid ebaseaduslikke aadresse see lubab.
Näide regulaaravaldise kohta, mis teeb korralikku tööd, koos selgitusega selle kohta, milliseid juhtumeid see ei hõlma, vaadake järgmist:
http://www.regular-expressions.info/email.html
Minu isiklik eelistus on käsitleda enamikku lihtsatest juhtudest ja anda hoiatus kõige muu eest, selle asemel et seda tagasi lükata. Kui Bob tõesti tahab, esitage bob@com.museum mitte bob@museum.com, miks mitte lasta tal?
Tere Reg,
Regexi saate testida, kasutades Online Regex Tester.
Samuti saab kindlasti palju rohkem ära teha, kui soovite tagada e-posti aadress kehtib vastavalt RFC-le.
On mõned põhjused, miks mitte lubada kellelgi vigast e-posti aadressi sisestada.
1. Nad saavad teie peale pahaseks, kui oodatud e-kiri ei jõua – olenemata sellest, kas see oli teie süü, aadress sisestati valesti või mitte.
2. Kui com.museum oleks kehtiv domeen ja oletame, et Yahoo! kasutas seda – mis tahes e-posti aadress, mis tagasi pöördub, avaldaks negatiivset mõju teie ettevõtte mainele meilide edastamisel. See võib viia kogu teie ettevõtte meili blokeerimiseni.
3. Kui teie meiliteenuse pakkuja lubas teil siseneda bob@com.museum, maksate ka iga sellele e-posti aadressile saadetud meili eest, kuni nad selle aadressi tellimuse tühistamise tõttu tagasi lükkavad. Ma hoiaksin eemale kõigist ESP-dest, mis lubavad sellist kehtetut meiliaadressi – nad lihtsalt võtavad teie raha!
Täname, et peatasite!
Doug
Ideaalne, just see, mida vajasin!
Väljendi kirjutamiseks on palju lihtsam viis:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
– Viimase modifikaatoriga /i ei ole vaja suurtähtede vahemikku näidata.
– Ma ei tea ühtegi TLD numbritega.
Märkusena võib öelda, et ma luban kuni 6 tähemärgiga tippdomeeni; uued tulevad regulaarselt ja kunagi ei tea (no mõnel tulevasel võib isegi numbreid sees olla, ma tean).
Hi there,
Püüan seda olemasoleval kujul reaalajas kasutada, kuid see ei paista reaalajas kehtivat nagu teie parooli tugevuse kontrollija…
Või olen ma lihtsalt nii abitu ja see ei tööta minu jaoks?
btw, mulle väga meeldib see, mis teil siin toimub, teie õpetused on väga lihtsad, lisan selle kindlasti järjehoidjatesse….
Lihtsalt teadmiseks; Ma pole Ade lahendust proovinud, kuid ülaltoodud muster ei kinnita apostroofidega e-posti aadresse.. (nt Mike.O'Hare@Whatever.com). Apostroofid kehtivad vastavalt standardile RFC 2821/2822 –> http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
Tundub, et see ei käsitle ka plussmärki, mis on kehtiv.
Vaata: http://www.dominicsayers.com/isemail/
Laiemas plaanis on see koodi lõikamise ja kleepimise põhiprobleem, mis väärib iseenesest täielikku arutelu.
@robbyslaughter.com
sa oled nunnu..
see töötab hästi..!@
Oleks hea, kui leiaksime lahenduse, et vältida võltsitud e-posti aadresse WordPressi kommentaarides
Väike parandus: regulaaravaldise lõpus on ekstra ()+. See peaks lugema:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
Esimesega aktsepteeritaks mis tahes pikkusega tippdomeenisid (mis ei ole olemuslikult vale, nagu teised on märkinud, kuid kui see oli eesmärk, võiks väljendit lühendada).
Kas saate palun selgitada selle koodi regulaaravaldist ja selle toimimist? Samuti .testi kohta – kas .test on JavaScripti vaikelause, et kontrollida asju, nagu tegite ülaltoodud koodis?
See on lühike kood e-posti väljendamiseks-
funktsioon validateEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
return emailPattern.test(id);
}
Deepak Rai
varanasi
See on lühike kood e-posti väljendamiseks-
funktsioon validateEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
return emailPattern.test(id);
}
Deepak Rai
varanasi
Suur tänu onu. See aitas mind palju 🙂
Amanda
tänan koodi eest!
Täname, kuid selles regexis on viga. Ma ei ole regexi ekspert, kuid proovisin meili:
test@test
ja see läbis regexi... Märkasin, et "." nii peaks olema:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
veeretan koos
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$ /
ja kuidas on lood .infoga?
oh kurat… 3 aastat tagasi? :S
Noh, see on vaid ligikaudne kontroll, kuid mitte 100% täpne, näiteks oleks see okei john_doe.@gmail.com mis tegelikult ei ole kehtiv e-posti aadress (punkt ei ole meili kohalikus osas viimase märgina lubatud).
Samuti võtaks see vastu john…doe@gmail.com mis on samuti kehtetu, kuna jadas ei saa olla rohkem kui üks punkt.
Need on vaid mõned vead, mida esmapilgul märkasin.
Minu eesmärk ei ole lihtsalt sellele tähelepanu juhtida juhuks, kui keegi kavatseb seda turvakontrollina kasutada – see pole piisavalt turvaline.
Teabe saamiseks kehtivate e-posti aadresside kohta vaadake seda: http://en.wikipedia.org/wiki/E-mail_address
Deepak,
Tegelikult arvan, et peate täpi (.) jaoks kasutama paoklahvi. Seega peaks teie funktsioon olema selle asemel:
funktsioon validateEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
return emailPattern.test(id);
}
Vastasel juhul tähendaks punkt "mis tahes tähemärki". Usun, et sellistest erimärkidest tuleb põgeneda.
soovidega,
Federico
function validateEmail(fld) {
var error=””;
var tfld = trimmi(fld.väärtus); // välja kärbitud tühikuga väärtus
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == "Sisestage oma e-posti aadress") {
error = "Palun sisestage oma e-posti aadress.n";
} else if (!emailFilter.test(tfld)) { //testige meilisõnumit ebaseaduslike tähemärkide jaoks
error = "Palun sisestage kehtiv e-posti aadress.n";
} else if (fld.value.match(illegalChars)) {
error = "Palun sisestage kehtiv e-posti aadress.n";
}
tagastamise viga;
}
function validateEmail(fld) {
var error=””;
var tfld = trimmi(fld.väärtus); // välja kärbitud tühikuga väärtus
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == "Sisestage oma e-posti aadress") {
error = "Palun sisestage oma e-posti aadress.n";
} else if (!emailFilter.test(tfld)) { //testige meilisõnumit ebaseaduslike tähemärkide jaoks
error = "Palun sisestage kehtiv e-posti aadress.n";
} else if (fld.value.match(illegalChars)) {
error = "Palun sisestage kehtiv e-posti aadress.n";
}
tagastamise viga;
}
function validateEmail(fld) {
var error=””;
var tfld = trimmi(fld.väärtus); // välja kärbitud tühikuga väärtus
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == "Sisestage oma e-posti aadress") {
error = "Palun sisestage oma e-posti aadress.n";
} else if (!emailFilter.test(tfld)) { //testige meilisõnumit ebaseaduslike tähemärkide jaoks
error = "Palun sisestage kehtiv e-posti aadress.n";
} else if (fld.value.match(illegalChars)) {
error = "Palun sisestage kehtiv e-posti aadress.n";
}
tagastamise viga;
}
function validateEmail(fld) {
var error=””;
var tfld = trimmi(fld.väärtus); // välja kärbitud tühikuga väärtus
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == "Sisestage oma e-posti aadress") {
error = "Palun sisestage oma e-posti aadress.n";
} else if (!emailFilter.test(tfld)) { //testige meilisõnumit ebaseaduslike tähemärkide jaoks
error = "Palun sisestage kehtiv e-posti aadress.n";
} else if (fld.value.match(illegalChars)) {
error = "Palun sisestage kehtiv e-posti aadress.n";
}
tagastamise viga;
}
funktsiooni trimmi(d)
{
return s.replace(/^s+|s+$/, ”);
}
funktsiooni trimmi(d)
{
return s.replace(/^s+|s+$/, ”);
}
".focus" on funktsioon, see peaks olema:
email.focus()
".focus" on funktsioon, see peaks olema:
email.focus()
awesome
Töötab nagu gem.. Suurepärane reg-avaldiste kasutamine javascriptis…
See on pragu kalliskivis…
Aktsepteeritakse aadressi “mmm@mmm..com”. Kuid kaks punkti koos ei kehti.
Poisid, kasutage. See ei nõua JS-i valideerimist.
Kuid töötab ainult kaasaegsete brauserite puhul. Kahjuks pole maailm veel järele jõudnud. —
Saadetud iPhone'i postkastist