Hetki sitten laitoin a Salasanan vahvuuden tarkistaja, joka käyttää JavaScriptiä ja säännöllisiä lausekkeita. Samasta muistiinpanosta voit myös tarkistaa sähköpostiosoitteen rakenteen käyttämällä samaa säännöllisen lausekkeen (regex) menetelmää.
Jos lomake-elementilläsi on id = ”sähköpostiosoite” ja lisäät lomakkeen onSubmit = ”return checkEmail ();", Tämä on Javascript-toiminto, jota voit käyttää ilmoituksen palauttamiseen, jos sähköpostiosoitteella on kelvollinen rakenne tai ei:
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; } }
Toiminto tarkistaa sähköpostin sisällön suodattimen kanssa. Jos vertailu epäonnistuu, se avaa ilmoituksen ja palauttaa kohdistuksen takaisin sähköpostiosoitekenttään!
Lomakkeille, joissa on useita sähköpostiosoitteita, olisi hyvä tehdä class = ”emailaddress”. Jos sinulla on prototype.js-kirjasto (http://www.prototypejs.org), joka on sivulla, voit tehdä jotain tällaista:
var valid = tosi;
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
$$ ('. emailaddress'). kukin (funktio (sähköposti) {
if (! filter.test (email.value)) {
hälytys (? Anna oikea sähköpostiosoite?);
email.focus;
voimassa = väärä;
}
});
palautus voimassa;
Kiitos Ade! Minun täytyy oppia lisää luokista ja JavaScriptistä!
Dougin alkuperäinen esimerkki oli siisti, mutta tämä jäätyy! En tiennyt, että voit käsitellä elementtejä, joilla on luokka tällä tavoin, ja toiminnallinen syntakse on suloinen.
Ade ja hänen tiiminsä ovat hämmästyttäviä!
Hienoa, voin aina luottaa sinuun jumalattomiin viileisiin skripteihin! 🙂
Kiitos Tony!
Pidän ajatuksesta, mutta epäröin omaksua tämän säännöllisen lausekkeen ilman kuvausta siitä, mitä laillisia sähköpostiosoitteita se ei hyväksy ja mitkä laittomat osoitteet se sallii.
Katso esimerkki säännöllisestä lausekkeesta, joka tekee kunnollista työtä, selityksen kanssa, mitä tapauksia se ei kata:
http://www.regular-expressions.info/email.html
Henkilökohtaisena mieltymykseni on kattaa suurin osa yksinkertaisista tapauksista ja antaa varoitus kaikesta muusta sen sijaan, että hylkääisin sen. Jos Bob todella haluaa lähetyksen bob@com.museum sen sijaan, bob@museum.com, miksi ei anna hänen?
Hei Reg,
Voit testata Regexiä käyttämällä Online Regex -testari.
Lisäksi voit varmasti tehdä paljon enemmän, jos haluat varmistaa sähköpostiosoite on voimassa RFC: n mukaisesti.
On olemassa muutama syy, miksi ei sallita jonkun syöttää virheellistä sähköpostiosoitetta:
1. Heidät ärsyttävät sinua, kun odottamaasi sähköpostia ei saada läpi - riippumatta siitä, syitkö osoite väärin.
2. Jos com.museum oli kelvollinen verkkotunnus ja sanotaan, Yahoo! käytti sitä - kaikilla palautetuilla sähköpostiosoitteilla olisi kielteinen vaikutus yrityksesi maineeseen sähköpostin jakelussa. Tämä voi johtaa siihen, että kaikki yrityksesi sähköpostit estetään.
3. Jos sähköpostipalveluntarjoajasi antoi sinulle pääsyn bob@com.museum, maksat myös jokaisesta kyseiseen sähköpostiosoitteeseen lähetetystä sähköpostista, kunnes he peruuttivat kyseisen osoitteen pomppujen takia. Haluaisin välttää kaikki ESP: t, jotka sallivat virheellisen sähköpostiosoitteen - he vain ottavat rahasi!
Kiitos käynnistä!
Doug
Täydellinen, juuri tarvitsemani!
On paljon yksinkertaisempi tapa kirjoittaa lauseke:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
- Lopullisella muokkaimella / i ei tarvitse ilmoittaa isoja kirjaimia.
- En tiedä yhtään TLD jossa on numeroita.
Sivuhuomautuksena, sallin TLD: n enintään 6 merkillä; uusia saapuu säännöllisesti etkä koskaan tiedä (no, tulevissa sommeissa voi olla jopa numeroita, tiedän).
Moi,
Pyrin käyttämään tätä olemassa olevassa muodossa reaaliajassa, mutta tämä ei näytä vahvistuvan reaaliajassa, kuten salasanan vahvuuden tarkistin ...
Vai olenko vain niin avulias, ja se ei toimi minulle?
BTW, pidän todella siitä, mitä täällä olet tekemässä, opetusohjelmasi ovat hyvin yksinkertaisia, aion varmasti lisätä kirjanmerkkeihin tämän….
Vain FYI; En ole kokeillut Aden ratkaisua, mutta yllä oleva malli ei vahvista sähköpostiosoitteita, joissa heittomerkit .. (esim. Mike.O'Hare@Whatever.com). Apostrofit ovat kelvollisia RFC: n 2821/2822 -> mukaisesti http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
Se ei myöskään näytä käsittelevän plusmerkkiä, joka on kelvollinen.
Katso: http://www.dominicsayers.com/isemail/
Laajemmin ottaen tämä on keskeinen ongelma koodin leikkaamisessa ja liittämisessä, joka ansaitsee täyden keskustelun sinänsä.
@ robbyslaughter.com
olet nutz ..
se toimii hyvin ..! @
Olisi hieno, jos löydämme ratkaisun väärennettyjen sähköpostiosoitteiden välttämiseksi WordPressin kommenteissa
Vain pieni korjaus: Säännöllisen lausekkeen lopussa on ylimääräinen () +. Sen pitäisi lukea:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
Ensimmäisen kohdalla hyväksytään mikä tahansa pituus TLD: t (mikä ei ole sisäisesti väärin, kuten muut ovat huomauttaneet, mutta jos se oli tarkoitus, lauseketta voitaisiin lyhentää).
Voitteko selittää tämän koodin säännöllisen lausekkeen ja miten se toimii? Myös .testistä - Onko .test oletusselvitys javascriptissä tarkistaaksesi asioita, kuten teit yllä olevassa koodissa?
Tämä on lyhyt koodi sähköpostilausekkeelle-
function validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
return emailPattern.test (id);
}
Deepak Rai
Varanasi
Tämä on lyhyt koodi sähköpostilausekkeelle-
function validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
return emailPattern.test (id);
}
Deepak Rai
Varanasi
Kiitos paljon setä. Se auttoi minua paljon 🙂
Amanda
kiitos koodista!
Kiitos, mutta tässä regexissä on virhe. En ole regex-asiantuntija, mutta yritin sähköpostia:
testi testi
ja se ohitti regexin ... Huomasin, ettei se puutu pakenemaan "." joten sen pitäisi olla:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
Olen vieressä
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)**(\\.\\w{2,3})+$ /
ja entä .infot?
oi paska ... 3 vuotta sitten? : S
No, tämä on vain karkea tarkistus, mutta ei 100% tarkka, esimerkiksi tämä olisi ok john_doe. @ gmail.com mikä ei todellakaan ole kelvollinen sähköpostiosoite (piste ei ole sallittu viimeisenä merkkinä sähköpostin paikallisessa osassa).
Myös se hyväksyisi john… doe@gmail.com mikä on myös virheellinen, koska jaksossa voi olla vain yksi piste.
Nämä ovat vain joitain virheitä, jotka huomasin ensi silmäyksellä.
Aikomukseni ei ole röyhkeä vain huomauttaa tästä, jos joku aikoo käyttää sitä turvatarkastuksena - ei riittävän turvallinen.
Lisätietoja voimassa olevista sähköpostiosoitteista saat tästä: http://en.wikipedia.org/wiki/E-mail_address
Deepak,
Itse asiassa mielestäni sinun on käytettävä pakoa pisteelle ("."). Joten toimintosi pitäisi olla sen sijaan:
function validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
return emailPattern.test (id);
}
Muussa tapauksessa piste tarkoittaisi mitä tahansa merkkiä. Uskon, että tällaiset erikoishahmot täytyy välttää.
Terveisin,
Federico
function validateEmail (fld) {
var virhe = ””;
var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu pois
var emailFilter = /^[^@] +
var laitonChars = / [(),;: \ ”[]] /;
if (fld.value == "Anna sähköpostiosoitteesi") {
error = "Anna sähköpostiosoitteesi.n";
} else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta
error = "Anna kelvollinen sähköpostiosoite.n";
} else if (fld.value.match (laitonChars)) {
error = "Anna kelvollinen sähköpostiosoite.n";
}
palautusvirhe;
}
function validateEmail (fld) {
var virhe = ””;
var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu pois
var emailFilter = /^[^@] +
var laitonChars = / [(),;: \ ”[]] /;
if (fld.value == "Anna sähköpostiosoitteesi") {
error = "Anna sähköpostiosoitteesi.n";
} else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta
error = "Anna kelvollinen sähköpostiosoite.n";
} else if (fld.value.match (laitonChars)) {
error = "Anna kelvollinen sähköpostiosoite.n";
}
palautusvirhe;
}
function validateEmail (fld) {
var virhe = ””;
var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu pois
var emailFilter = /^[^@] +
var laitonChars = / [(),;: \ ”[]] /;
if (fld.value == "Anna sähköpostiosoitteesi") {
error = "Anna sähköpostiosoitteesi.n";
} else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta
error = "Anna kelvollinen sähköpostiosoite.n";
} else if (fld.value.match (laitonChars)) {
error = "Anna kelvollinen sähköpostiosoite.n";
}
palautusvirhe;
}
function validateEmail (fld) {
var virhe = ””;
var tfld = leikkaus (fld.arvo); // kentän arvo, jonka välilyönti on leikattu pois
var emailFilter = /^[^@] +
var laitonChars = / [(),;: \ ”[]] /;
if (fld.value == "Anna sähköpostiosoitteesi") {
error = "Anna sähköpostiosoitteesi.n";
} else if (! emailFilter.test (tfld)) {// testaa sähköpostia laittomien merkkien varalta
error = "Anna kelvollinen sähköpostiosoite.n";
} else if (fld.value.match (laitonChars)) {
error = "Anna kelvollinen sähköpostiosoite.n";
}
palautusvirhe;
}
toiminnon trimmaus
{
return s.replace (/ ^ s + | s + $ /, ”);
}
toiminnon trimmaus
{
return s.replace (/ ^ s + | s + $ /, ”);
}
.Focus on funktio, sen pitäisi olla:
email.focus ()
.Focus on funktio, sen pitäisi olla:
email.focus ()
mahtava
Toimii kuten helmi .. Reg-lausekkeiden suuri käyttö javascriptissä ...
Se on halkeama helmi ...
Osoite “mmm @ mmm..com” hyväksytään. Mutta kaksi pistettä yhdessä ei ole kelvollinen.
Fellat, käytä. Se ei vaadi JS-vahvistusta.
Mutta toimii vain moderneilla selaimilla. Valitettavasti maailma ei ole vielä kiinni. -
Lähetetty iPhonen postilaatikosta