'N Ruk gelede sit ek 'n Wagwoordsterktekontroleerder met JavaScript en gewone uitdrukkings. Op dieselfde noot kan u ook die struktuur van 'n e-posadres nagaan met behulp van dieselfde metodiek vir reguliere uitdrukking (regex).
As u vormelement die id = ”e-posadres” en jy voeg 'n vorm by onSubmit = ”return checkEmail ();“, Dit is 'n Javascript-funksie wat u kan gebruik om 'n waarskuwing terug te stuur as die e-posadres 'n geldige struktuur het of nie:
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; } }
Die funksie valideer die inhoud van die e-pos na die filter. As die vergelyking misluk, verskyn 'n waarskuwing en gee die fokus terug na die e-posadresveld!
Vir vorms met veelvuldige e-posadresse, sal dit goed wees om klas=”e-posadres” te doen. As jy die prototype.js-biblioteek (http://www.prototypejs.org) wat op die bladsy ingesluit is, kan jy so iets doen:
var geldig = waar;
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
$$('.emailaddress').each(funksie(e-pos) {
if (!filter.toets(e-pos.waarde)) {
waarskuwing(? Verskaf asseblief 'n geldige e-posadres?);
e-pos.fokus;
geldig = onwaar;
}
});
terugkeer geldig;
Dankie Ade! Ek sal meer moet leer oor klasse en JavaScript!
Doug se oorspronklike voorbeeld was gaaf, maar hierdie een is vriesend! Ek het nie geweet dat jy elemente met 'n klas op hierdie manier kan verwerk nie, en die funksionele sintaksis is soet.
Ade en sy span is ongelooflik!
Lekker, ek kan altyd op jou staatmaak vir 'n paar oulike draaiboeke! 🙂
Dankie Tony!
Ek hou van die idee, maar ek sal huiwerig wees om hierdie spesifieke gereelde uitdrukking aan te neem sonder om te beskryf watter wettige e-posadresse dit nie aanvaar nie en watter onwettige adresse dit toelaat.
Vir 'n voorbeeld van 'n gewone uitdrukking wat 'n ordentlike werk doen saam met 'n verduideliking van watter gevalle dit nie dek nie, sien hierdie:
http://www.regular-expressions.info/email.html
My persoonlike voorkeur is om die meeste van die eenvoudige gevalle te dek en 'n waarskuwing vir al die ander uit te reik eerder as om dit te verwerp. As Bob regtig wil sto indien bob@com.museum eerder as bob@museum.com, hoekom laat hom nie toe nie?
Hallo Reg,
Jy kan die Regex toets deur gebruik te maak van 'n Aanlyn Regex-toetser.
Daar is ook beslis baie meer wat gedoen kan word as jy wil verseker dat 'n e-pos adres is geldig in ooreenstemming met die RFC.
Daar is 'n paar redes om iemand nie toe te laat om 'n ongeldige e-posadres in te voer nie:
1. Hulle sal vir jou vererg wanneer die e-pos wat hulle verwag het nie deurkom nie – ongeag of dit jou skuld was of nie die adres is verkeerd ingevoer.
2. As com.museum 'n geldige domein was en, kom ons sê, Yahoo! het dit bedryf – enige e-posadres wat geweier het, sal 'n negatiewe impak hê op jou maatskappy se reputasie vir e-posaflewering. Dit kan daartoe lei dat al jou maatskappy se e-pos geblokkeer word.
3. As jou e-pos diensverskaffer jou toegelaat het om in te gaan bob@com.museum, sal jy ook betaal vir elke e-pos wat na daardie e-posadres gestuur word totdat hulle daardie adres uitgeteken het weens weierings. Ek sal wegbly van enige ESP wat so 'n ongeldige e-posadres toelaat – hulle vat net jou geld!
Dankie dat jy opgehou het!
Doug
Perfek, net wat ek nodig gehad het!
Daar is baie eenvoudiger manier om die uitdrukking te skryf:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
– Met die finale wysiger /i is dit nie nodig om die hoofletterreeks aan te dui nie.
– Ek weet nie van enige nie TLD met nommers daarin.
Op 'n kantnoot laat ek wel TLD toe met tot 6 chars; nuwes kom gereeld aan en jy weet nooit (wel, sommige toekomstiges kan selfs nommers in hê, ek weet).
Hi daar,
Ek probeer dit in 'n bestaande vorm intyds gebruik, maar dit lyk nie of dit intyds bekragtig word soos jou wagwoordsterktetoetser nie ...
Of is ek net so clueless, en dit werk nie vir my nie?
btw, ek hou baie van wat jy hier aangaan, jou tutoriale is baie eenvoudig, ek sal beslis hierdie een boekmerk ....
Net 'n FYI; Ek het nog nie Ade se oplossing probeer nie, maar die patroon hierbo bevestig nie e-posadresse met apostrofe daarin nie .. (bv. Mike.O'Hare@Whatever.com). Apostrofe is geldig volgens die RFC 2821/2822 –> http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
Dit lyk ook nie of dit die pluskarakter hanteer nie, wat geldig is.
Sien ook: http://www.dominicsayers.com/isemail/
Op 'n groter noot, dit is 'n sleutelprobleem met knip-en-plak kode, een wat 'n volledige bespreking op sigself verdien.
@robbyslaughter.com
jy is moer..
dit werk goed..!@
Dit sal goed wees as ons 'n oplossing kan vind om vals e-posadresse op opmerkings op WordPress te vermy
Net 'n klein regstelling: Die gereelde uitdrukking het 'n ekstra ()+ aan die einde. Dit moet lees:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
Met die eerste een sal enige lengte TLD's aanvaar word (wat nie intrinsiek verkeerd is soos ander uitgewys het nie, maar as dit die bedoeling was, kan die uitdrukking verkort word).
Kan jy asseblief die gereelde uitdrukking van hierdie kode verduidelik en hoe dit werk? Ook oor .test – Is .test 'n verstekstelling in javascript om dinge na te gaan soos jy in die kode hierbo gedoen het?
Dit is 'n kort kode vir e-pos uitdrukking-
funksie validateEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
terugkeer emailPattern.test(id);
}
Deepak Rai
Varanasi
Dit is 'n kort kode vir e-pos uitdrukking-
funksie validateEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
terugkeer emailPattern.test(id);
}
Deepak Rai
Varanasi
Baie dankie oom. Dit het my baie gehelp 🙂
Amanda
dankie vir die kode!
Dankie, maar daar is 'n fout in hierdie regeks. Ek is nie 'n regex-kenner nie, maar ek het e-pos probeer:
toets@toets
en dit het die regex geslaag ... Ek het opgemerk dit ontbreek die "." so moet dit wees:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
Ek rol saam
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$ /
en wat van .info's?
o shit... 3 jaar gelede? :S
Wel, dit is net 'n rowwe ondersoek, maar nie 100% akkuraat nie, dit sal byvoorbeeld goed wees john_doe.@gmail.com wat eintlik nie 'n geldige e-posadres is nie (kolletjie word nie as 'n laaste karakter in die plaaslike deel van e-pos toegelaat nie).
Dit sou ook aanvaar john…doe@gmail.com wat ook ongeldig is aangesien daar nie meer as een punt in 'n ry kan wees nie.
Dit is net 'n paar foute wat ek met die eerste oogopslag opgemerk het.
My bedoeling is nie net om dit uit te wys as iemand van plan is om dit as 'n sekuriteitskontrole te gebruik nie - nie veilig genoeg nie.
Vir inligting oor geldige e-posadresse, kyk hierna: http://en.wikipedia.org/wiki/E-mail_address
Deepak,
Eintlik dink ek jy moet 'n ontsnapping vir die kolletjie (“.”) toepas. Dus, jou funksie moet eerder wees:
funksie validateEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
terugkeer emailPattern.test(id);
}
Andersins sou die kolletjie "enige karakter" beteken. Ek glo sulke spesiale karakters moet ontsnap word.
Groete,
Federico
function validateEmail(fld) {
var error="";
var tfld = trim(fld.waarde); // waarde van veld met witspasie afgesny
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == “Voer jou e-posadres in”) {
error = "Voer asseblief jou e-posadres in.n";
} anders as (!emailFilter.test(tfld)) {//toets e-pos vir onwettige karakters
error = "Voer asseblief 'n geldige e-posadres in.n";
} anders as (fld.value.match(illegalChars)) {
error = "Voer asseblief 'n geldige e-posadres in.n";
}
terugkeer fout;
}
function validateEmail(fld) {
var error="";
var tfld = trim(fld.waarde); // waarde van veld met witspasie afgesny
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == “Voer jou e-posadres in”) {
error = "Voer asseblief jou e-posadres in.n";
} anders as (!emailFilter.test(tfld)) {//toets e-pos vir onwettige karakters
error = "Voer asseblief 'n geldige e-posadres in.n";
} anders as (fld.value.match(illegalChars)) {
error = "Voer asseblief 'n geldige e-posadres in.n";
}
terugkeer fout;
}
function validateEmail(fld) {
var error="";
var tfld = trim(fld.waarde); // waarde van veld met witspasie afgesny
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == “Voer jou e-posadres in”) {
error = "Voer asseblief jou e-posadres in.n";
} anders as (!emailFilter.test(tfld)) {//toets e-pos vir onwettige karakters
error = "Voer asseblief 'n geldige e-posadres in.n";
} anders as (fld.value.match(illegalChars)) {
error = "Voer asseblief 'n geldige e-posadres in.n";
}
terugkeer fout;
}
function validateEmail(fld) {
var error="";
var tfld = trim(fld.waarde); // waarde van veld met witspasie afgesny
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == “Voer jou e-posadres in”) {
error = "Voer asseblief jou e-posadres in.n";
} anders as (!emailFilter.test(tfld)) {//toets e-pos vir onwettige karakters
error = "Voer asseblief 'n geldige e-posadres in.n";
} anders as (fld.value.match(illegalChars)) {
error = "Voer asseblief 'n geldige e-posadres in.n";
}
terugkeer fout;
}
funksie trim(s)
{
gee terug s.replace(/^s+|s+$/, ”);
}
funksie trim(s)
{
gee terug s.replace(/^s+|s+$/, ”);
}
Die '.focus' is 'n funksie, dit moet wees:
email.focus()
Die '.focus' is 'n funksie, dit moet wees:
email.focus()
ontsagwekkende
Werk soos juweel .. Groot gebruik van reg uitdrukkings in javascript ...
Dis 'n kraak in die juweel...
Die adres “mmm@mmm..com” sal aanvaar word. Maar twee kolletjies saam is nie geldig nie.
Manne, gebruik. Dit vereis geen JS-bekragtiging nie.
Maar werk net met moderne blaaiers. Ongelukkig het die wêreld nog nie ingehaal nie. —
Gestuur vanaf die posbus vir die iPhone