Ychydig amser yn ôl, codais a Gwiriwr Cryfder Cyfrinair gan ddefnyddio JavaScript a Mynegiadau Rheolaidd. Ar yr un nodyn hwnnw, gallwch hefyd wirio strwythur cyfeiriad e-bost gan ddefnyddio'r un fethodoleg mynegiant rheolaidd (regex).
Os oes gan eich elfen ffurflen y id = ”emailaddress” ac rydych chi'n ychwanegu ffurflen onSubmit = ”dychwelyd checkEmail ();“, Mae hon yn swyddogaeth Javascript y gallwch ei defnyddio i ddychwelyd rhybudd os oes gan y cyfeiriad e-bost strwythur dilys ai peidio:
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; } }
Mae'r swyddogaeth yn dilysu cynnwys yr e-bost i gynnwys yr hidlydd. Os bydd y gymhariaeth yn methu, mae'n gosod rhybudd ac yn dychwelyd y ffocws yn ôl i'r maes cyfeiriad e-bost!
Ar gyfer ffurflenni sydd â sawl cyfeiriad e-bost, byddai'n dda gwneud class = "emailaddress". Os oes gennych y llyfrgell prototeip.js (http://www.prototypejs.org) wedi'i gynnwys ar y dudalen gallwch wneud rhywbeth fel hyn:
var dilys = gwir;
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
$$ ('. emailaddress') yr un (swyddogaeth (e-bost) {
os (! filter.test (email.value)) {
rhybudd (? Rhowch gyfeiriad e-bost dilys os gwelwch yn dda?);
e-bost.focus;
dilys = ffug;
}
});
dychwelyd yn ddilys;
Diolch Ade! Bydd angen i mi ddysgu mwy am ddosbarthiadau a JavaScript!
Roedd enghraifft wreiddiol Doug yn cŵl, ond mae'r un hon yn rhewi! Nid oeddwn yn gwybod y gallech brosesu elfennau sy'n cael dosbarth yn y modd hwn, ac mae'r gystrawen swyddogaethol yn felys.
Mae Ade a'i dîm yn anhygoel!
Neis, gallaf bob amser ddibynnu arnoch chi am rai sgriptiau cŵl drygionus! 🙂
Diolch Tony!
Rwy'n hoffi'r syniad, ond byddwn yn betrusgar mabwysiadu'r mynegiant rheolaidd penodol hwn heb ddisgrifiad o ba gyfeiriadau e-bost cyfreithiol nad yw'n eu derbyn a pha gyfeiriadau anghyfreithlon y mae'n eu caniatáu.
Am enghraifft o fynegiant rheolaidd sy'n gwneud gwaith gweddus ochr yn ochr ag esboniad o ba achosion nad yw'n ymdrin â nhw, gweler hyn:
http://www.regular-expressions.info/email.html
Fy newis personol yw ymdrin â'r rhan fwyaf o'r achosion syml a rhoi rhybudd am bopeth arall yn hytrach na'i wrthod. Os yw Bob wir eisiau sto cyflwyno bob@com.amgueddfa yn hytrach na bob@amgueddfa.com, beth am adael iddo?
Helo Reg,
Gallwch chi brofi'r Regex gan ddefnyddio Profwr Regex Ar-lein.
Hefyd, yn bendant mae llawer mwy y gellir ei wneud os ydych chi am sicrhau cyfeiriad e-bost yn ddilys yn unol â'r RFC.
Mae yna ychydig o resymau dros beidio â chaniatáu i rywun nodi cyfeiriad e-bost annilys:
1. Byddant yn eich cythruddo pan na fydd yr e-bost yr oeddent yn ei ddisgwyl yn dod drwyddo - ni waeth ai eich bai chi oedd y cofnod, cofnodwyd y cyfeiriad yn anghywir.
2. Pe bai com.museum yn barth dilys a, gadewch i ni ddweud, Yahoo! ei weithredu - byddai unrhyw gyfeiriad e-bost a adlamodd yn cael effaith negyddol ar enw da eich cwmni am ddosbarthu e-bost. Gallai hyn arwain at rwystro holl e-bost eich cwmni.
3. Os oedd eich darparwr gwasanaeth e-bost yn caniatáu ichi fynd i mewn bob@com.amgueddfa, byddech hefyd yn talu am bob e-bost a anfonir i'r cyfeiriad e-bost hwnnw nes iddynt ddad-danysgrifio'r cyfeiriad hwnnw oherwydd bownsio. Byddwn yn cadw'n glir o unrhyw ESP a fyddai'n caniatáu cyfeiriad e-bost annilys fel 'na - maen nhw'n cymryd eich arian yn unig!
Diolch am roi'r gorau iddi!
Doug
Perffaith, dim ond yr hyn yr oeddwn ei angen!
Mae yna ffordd symlach o lawer o ysgrifennu'r ymadrodd:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
- Gyda'r addasydd terfynol / i nid oes angen nodi'r ystod achosion uchaf.
- Nid wyf yn gwybod am ddim TLD gyda rhifau ynddo.
Ar nodyn ochr, rwy'n caniatáu TLD gyda hyd at 6 chars; mae rhai newydd yn cyrraedd yn rheolaidd a dydych chi byth yn gwybod (wel, efallai y bydd gan rai yn y dyfodol rifau ynddo hyd yn oed, dwi'n gwybod).
Hi 'na,
Rwy'n ceisio defnyddio hwn ar ffurf sy'n bodoli mewn amser real, ond nid yw'n ymddangos bod hyn yn dilysu mewn amser real fel eich gwiriwr cryfder cyfrinair ...
Neu, ai fi yw'r unig gliw hwnnw, ac a yw'n gweithio i mi?
btw, rwy'n hoff iawn o'r hyn sydd gennych yn digwydd yma, mae eich tiwtorialau yn syml iawn, byddaf yn bendant yn rhoi nod tudalen ar yr un hon….
Dim ond FYI; Nid wyf wedi rhoi cynnig ar ddatrysiad Ade ond nid yw'r patrwm uchod yn dilysu cyfeiriadau e-bost gydag collnodau ynddynt .. (ee, Mike.O'Hare@Whenko.com). Mae collnodau yn ddilys fesul RFC 2821/2822 -> http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
Nid yw'n ymddangos ychwaith ei fod yn trin y cymeriad plws, sy'n ddilys.
Gweler: http://www.dominicsayers.com/isemail/
Ar nodyn mwy, mae hon yn broblem allweddol gyda chod torri a gludo, un sy'n haeddu trafodaeth lawn ynddo'i hun.
@ robbyslaughter.com
ti'n nutz ..
mae'n gweithio'n iawn ..! @
Byddai'n iawn pe gallem ddod o hyd i ateb i osgoi cyfeiriadau e-bost ffug ar sylwadau ar WordPress
Cywiriad bach yn unig: Mae gan yr ymadrodd rheolaidd () + ychwanegol ar y diwedd. Dylai ddarllen:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
Gyda'r un cyntaf, byddai TLDs o unrhyw hyd yn cael eu derbyn (nad yw'n anghywir yn y bôn fel y mae eraill wedi nodi, ond os mai dyna'r bwriad, gellid byrhau'r mynegiant).
A allwch chi egluro mynegiad rheolaidd y cod hwn a sut mae'n gweithio? Hefyd am .test - A yw .test yn ddatganiad diofyn yn javascript i wirio pethau fel y gwnaethoch yn y cod uchod?
Cod byr yw hwn ar gyfer mynegiant e-bost-
swyddogaeth validateEmail (id)
{
var emailPattern = /^0a-zA-Z9-0._-9+@DLE-zA-Z2,4-XNUMX.-XNUMX+.DLE-zA-ZXNUMXinneach$/;
dychwelyd emailPattern.test (id);
}
Deepak Rai
varanasi
Cod byr yw hwn ar gyfer mynegiant e-bost-
swyddogaeth validateEmail (id)
{
var emailPattern = /^0a-zA-Z9-0._-9+@DLE-zA-Z2,4-XNUMX.-XNUMX+.DLE-zA-ZXNUMXinneach$/;
dychwelyd emailPattern.test (id);
}
Deepak Rai
varanasi
Diolch yn ewythr llawer. Fe wnaeth hynny fy helpu llawer 🙂
Amanda
diolch am y cod!
Diolch, ond mae gwall yn y regex hwn. Nid wyf yn arbenigwr regex, ond ceisiais e-bost:
prawf @ prawf
ac fe basiodd y regex ... sylwais ei fod yn brin o ddianc o'r "." felly dylai fod:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
Rwy'n rholio gyda
/^\\w+(2,3\\.-XNUMX?\\w+)*@\\w+(XNUMX\\.-XNUMX?\\w+)*(\\.\\w{XNUMXinneach)+$ /
a beth am .info's?
oh cachu ... 3 blynedd yn ôl? : S.
Wel, gwiriad bras yn unig yw hwn ond nid 100% yn gywir, er enghraifft byddai hyn yn iawn john_doe. @ gmail.com nad yw mewn gwirionedd yn gyfeiriad e-bost dilys (ni chaniateir dot fel cymeriad olaf yn rhan leol e-bost).
Hefyd byddai'n derbyn john…doe@gmail.com sydd hefyd yn annilys gan na all fod mwy nag un dot mewn dilyniant.
Dyma ychydig o ddiffygion y sylwais arnynt ar yr olwg gyntaf.
Nid yw fy mwriad yn basio dim ond tynnu sylw at hyn rhag ofn bod rhywun yn bwriadu defnyddio hwn fel gwiriad diogelwch - ddim yn ddigon diogel.
I gael gwybodaeth am gyfeiriadau e-bost dilys, gwiriwch hyn: http://en.wikipedia.org/wiki/E-mail_address
Deepak,
A dweud y gwir, rwy’n credu bod angen i chi gymhwyso dihangfa ar gyfer y dot (“.”). Felly, dylai eich swyddogaeth fod, yn lle:
swyddogaeth validateEmail (id)
{
var emailPattern = /^0a-zA-Z9-0._-9+@DLE-zA-Z2,4-XNUMX.-XNUMX+.DLE-zA-ZXNUMXinneach$/;
dychwelyd emailPattern.test (id);
}
Fel arall, byddai'r dot yn golygu “unrhyw gymeriad”. Rwy'n credu bod angen dianc rhag cymeriadau arbennig o'r fath.
Regards,
Federico
swyddogaeth validateEmail (fld) {
gwall var = ””;
var tfld = trim (fld.value); // gwerth y cae gyda gofod gwyn wedi'i docio
var emailFilter = /^$^@XNUMX+@DLE^@.XNUMX+.DLE@@**ww$/;
var illeChars = / [(),;: \ ”[]] /;
os (fld.value == “Rhowch eich Cyfeiriad e-bost”) {
error = “Rhowch eich cyfeiriad E-bost.n”;
} arall os (! emailFilter.test (tfld)) {// profi e-bost ar gyfer cymeriadau anghyfreithlon
error = “Rhowch gyfeiriad e-bost dilys.n”;
} arall os (fld.value.match (illeChars)) {
error = “Rhowch gyfeiriad e-bost dilys.n”;
}
gwall dychwelyd;
}
swyddogaeth validateEmail (fld) {
gwall var = ””;
var tfld = trim (fld.value); // gwerth y cae gyda gofod gwyn wedi'i docio
var emailFilter = /^$^@XNUMX+@DLE^@.XNUMX+.DLE@@**ww$/;
var illeChars = / [(),;: \ ”[]] /;
os (fld.value == “Rhowch eich Cyfeiriad e-bost”) {
error = “Rhowch eich cyfeiriad E-bost.n”;
} arall os (! emailFilter.test (tfld)) {// profi e-bost ar gyfer cymeriadau anghyfreithlon
error = “Rhowch gyfeiriad e-bost dilys.n”;
} arall os (fld.value.match (illeChars)) {
error = “Rhowch gyfeiriad e-bost dilys.n”;
}
gwall dychwelyd;
}
swyddogaeth validateEmail (fld) {
gwall var = ””;
var tfld = trim (fld.value); // gwerth y cae gyda gofod gwyn wedi'i docio
var emailFilter = /^$^@XNUMX+@DLE^@.XNUMX+.DLE@@**ww$/;
var illeChars = / [(),;: \ ”[]] /;
os (fld.value == “Rhowch eich Cyfeiriad e-bost”) {
error = “Rhowch eich cyfeiriad E-bost.n”;
} arall os (! emailFilter.test (tfld)) {// profi e-bost ar gyfer cymeriadau anghyfreithlon
error = “Rhowch gyfeiriad e-bost dilys.n”;
} arall os (fld.value.match (illeChars)) {
error = “Rhowch gyfeiriad e-bost dilys.n”;
}
gwall dychwelyd;
}
swyddogaeth validateEmail (fld) {
gwall var = ””;
var tfld = trim (fld.value); // gwerth y cae gyda gofod gwyn wedi'i docio
var emailFilter = /^$^@XNUMX+@DLE^@.XNUMX+.DLE@@**ww$/;
var illeChars = / [(),;: \ ”[]] /;
os (fld.value == “Rhowch eich Cyfeiriad e-bost”) {
error = “Rhowch eich cyfeiriad E-bost.n”;
} arall os (! emailFilter.test (tfld)) {// profi e-bost ar gyfer cymeriadau anghyfreithlon
error = “Rhowch gyfeiriad e-bost dilys.n”;
} arall os (fld.value.match (illeChars)) {
error = “Rhowch gyfeiriad e-bost dilys.n”;
}
gwall dychwelyd;
}
trim (iau) swyddogaeth
{
dychwelyd s.replace (/ ^ s + | s + $ /, ”);
}
trim (iau) swyddogaeth
{
dychwelyd s.replace (/ ^ s + | s + $ /, ”);
}
Mae'r '.focus' yn swyddogaeth, dylai fod:
e-bost.focus ()
Mae'r '.focus' yn swyddogaeth, dylai fod:
e-bost.focus ()
anhygoel
Yn gweithio fel gem .. Defnydd gwych o ymadroddion reg yn javascript…
Mae'n cracio yn y berl…
Derbynnir y cyfeiriad “mmm @ mmm..com”. Ond nid yw dau ddot gyda'i gilydd yn ddilys.
Fellas, defnydd. Nid oes angen unrhyw ddilysiad JS arno.
Ond dim ond yn gweithio gyda phorwyr modern. Yn anffodus, nid yw'r byd wedi dal i fyny eto. -
Anfonwyd o'r Blwch Post ar gyfer iPhone