Fyrir stuttu setti ég upp a Styrktaraðili lykilorðs með JavaScript og reglulegu segð. Á sömu nótum er einnig hægt að athuga uppbyggingu netfangsins með sömu reglulegu segð (regex) aðferðafræði.
Ef formþátturinn þinn hefur id = ”netfang“ og þú bætir við eyðublaði onSubmit = ”return checkEmail ();“, Þetta er Javascript aðgerð sem þú getur notað til að skila viðvörun ef netfangið hefur gilda uppbyggingu eða ekki:
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; } }
Aðgerðin staðfestir innihald tölvupóstsins við það sem er í síunni. Ef samanburðurinn misheppnast birtist hann viðvörun og skilar fókusinum aftur á netfangareitinn!
Fyrir eyðublöð með mörgum netföngum væri gott að gera class="netfang". Ef þú ert með prototype.js bókasafnið (http://www.prototypejs.org) með á síðunni geturðu gert eitthvað á þessa leið:
var valid = satt;
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(?Vinsamlegast gefðu upp gilt netfang?);
email.focus;
gilt = ósatt;
}
});
skil gilt;
Takk Ade! Ég þarf að læra meira um námskeið og JavaScript!
Upprunalega dæmið hans Doug var flott, en þetta er ískalt! Ég vissi ekki að þú gætir unnið þætti með flokki á þennan hátt og virkni setningafræðin er sæt.
Ade og teymið hans eru ótrúleg!
Sniðugt, ég get alltaf treyst á þig fyrir ógnvekjandi flott handrit! 🙂
Takk Tony!
Mér líst vel á hugmyndina, en ég myndi hika við að taka upp þessa tilteknu reglulegu tjáningu án þess að lýsa hvaða löglegu netföngum það samþykkir ekki og hvaða ólöglegu netföng það leyfir.
Fyrir dæmi um reglubundna tjáningu sem skilar þokkalegu starfi ásamt útskýringu á hvaða tilfellum hún nær ekki til, sjá þetta:
http://www.regular-expressions.info/email.html
Mín persónulega ósk er að ná yfir flest einföldu tilvikin og gefa út viðvörun um allt annað frekar en að hafna því. Ef Bob vill virkilega leggja fram bob@com.museum í stað þess að bob@museum.com, af hverju ekki að leyfa honum?
Hæ Reg,
Þú getur prófað Regex með því að nota an Regex prófunartæki á netinu.
Einnig, það er örugglega miklu meira sem hægt er að gera ef þú vilt tryggja netfang gildir í samræmi við RFC.
Það eru nokkrar ástæður fyrir því að leyfa ekki einhverjum að slá inn ógilt netfang:
1. Þeir verða pirraðir á þér þegar tölvupósturinn sem þeir bjuggust við kemst ekki í gegn – óháð því hvort það var þér að kenna að heimilisfangið var rangt slegið inn.
2. Ef com.museum væri gilt lén og við skulum segja Yahoo! starfrækti það - hvaða netfang sem skoppaði myndi hafa neikvæð áhrif á orðspor fyrirtækisins fyrir sendingu tölvupósts. Þetta gæti leitt til þess að öllum tölvupósti fyrirtækis þíns verði lokað.
3. Ef tölvupóstþjónustan þín leyfði þér að slá inn bob@com.museum, þú myndir líka borga fyrir hvern tölvupóst sem sendur er á það netfang þar til þeir sögðu upp áskriftinni vegna hopp. Ég myndi forðast hvaða ESP sem myndi leyfa ógilt netfang eins og það - þeir eru bara að taka peningana þína!
Takk fyrir að hætta við!
Doug
Fullkomið, bara það sem ég þurfti!
Það er miklu einfaldari leið til að skrifa orðatiltækið:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
– Með lokabreytingunni /i er engin þörf á að gefa til kynna hástafasviðið.
— Ég veit ekki um neina Þjóðarlén með tölum í.
Til hliðar, ég leyfi TLD með allt að 6 stöfum; nýir koma reglulega og það er aldrei að vita (jæja, sumar framtíðar geta jafnvel verið með tölur, ég veit).
Hi there,
Ég er að reyna að nota þetta á núverandi formi í rauntíma, en þetta virðist ekki vera að sannreyna í rauntíma eins og styrktarprófun lykilorðs þíns ...
Eða er ég bara svona hugmyndalaus og það virkar ekki fyrir mig?
btw, mér líkar mjög við það sem þú ert að gerast hér, kennsluefnin þín eru mjög einföld, ég mun örugglega setja bókamerki á þetta….
Bara til upplýsingar; Ég hef ekki prófað lausn Ade en mynstrið hér að ofan staðfestir ekki netföng með frávikum í þeim .. (td Mike.O'Hare@Whatever.com). Undanstafanir gilda samkvæmt RFC 2821/2822 –> http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
Það virðist heldur ekki höndla plússtafinn, sem er gilt.
Sjá: http://www.dominicsayers.com/isemail/
Í stærri huga er þetta lykilvandamál við að klippa og líma kóða, sem verðskuldar ítarlega umræðu í sjálfu sér.
@robbyslaughter.com
þú ert fúll..
það virkar fínt..!@
Væri í lagi ef við gætum fundið lausn til að forðast fölsuð netföng við athugasemdir á WordPress
Bara smá leiðrétting: Regluleg segðin hefur auka ()+ í lokin. Þar ætti að standa:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
Með því fyrsta væri hægt að samþykkja hvaða lengd TLD sem er (sem er ekki í eðli sínu rangt eins og aðrir hafa bent á, en ef það væri ætlunin væri hægt að stytta tjáninguna).
Geturðu vinsamlegast útskýrt reglubundna tjáningu þessa kóða og hvernig hann virkar? Einnig um .test – Er .test sjálfgefin staðhæfing í javascript til að athuga hluti eins og þú gerðir í kóðanum hér að ofan?
Þetta er stuttur kóði fyrir tjáningu tölvupósts-
virka staðfestaEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
skilaðu emailPattern.test(id);
}
Deepak Rai
varanasi
Þetta er stuttur kóði fyrir tjáningu tölvupósts-
virka staðfestaEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
skilaðu emailPattern.test(id);
}
Deepak Rai
varanasi
Kærar þakkir frændi. Það hjálpaði mér mikið 🙂
amanda
takk fyrir kóðann!
Takk, en það er villa í þessu regex. Ég er ekki regex sérfræðingur, en ég prófaði tölvupóst:
próf@próf
og það fór framhjá regex... Ég tók eftir því að það vantar að sleppa við "." þannig að það ætti að vera:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
Ég rúlla með
/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$ /
og hvað með .info's?
oh shit... fyrir 3 árum? :S
Jæja, þetta er bara gróf athugun en ekki 100% nákvæm, til dæmis væri þetta í lagi john_doe.@gmail.com sem er í raun ekki gilt netfang (punktur er ekki leyfður sem síðasti stafur í staðbundnum hluta tölvupósts).
Einnig myndi það samþykkja john…doe@gmail.com sem er einnig ógilt þar sem það getur ekki verið fleiri en einn punktur í röð.
Þetta eru bara nokkrir gallar sem ég tók eftir við fyrstu sýn.
Ætlun mín er ekki bara að benda á þetta ef einhver ætlar að nota þetta sem öryggisathugun - ekki nógu öruggt.
Fyrir upplýsingar um gild netföng skoðaðu þetta: http://en.wikipedia.org/wiki/E-mail_address
Deepak,
Reyndar held ég að þú þurfir að beita undankomu fyrir punktinn (“.”). Svo aðgerðin þín ætti að vera í staðinn:
virka staðfestaEmail(id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,4}$/;
skilaðu emailPattern.test(id);
}
Annars myndi punkturinn þýða „hvaða staf sem er“. Ég tel að það þurfi að flýja svona sérpersónur.
kveðjur,
Federico
fall validateEmail(fld) {
var villa="";
var tfld = trim(fld.value); // gildi reitsins með bili klippt af
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == „Sláðu inn netfangið þitt“) {
error = "Vinsamlegast sláðu inn netfangið þitt.n";
} else if (!emailFilter.test(tfld)) { //próf tölvupóstur fyrir ólöglega stafi
error = "Vinsamlegast sláðu inn gilt netfang.n";
} annað ef (fld.value.match(illegalChars)) {
error = "Vinsamlegast sláðu inn gilt netfang.n";
}
skila villa;
}
fall validateEmail(fld) {
var villa="";
var tfld = trim(fld.value); // gildi reitsins með bili klippt af
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == „Sláðu inn netfangið þitt“) {
error = "Vinsamlegast sláðu inn netfangið þitt.n";
} else if (!emailFilter.test(tfld)) { //próf tölvupóstur fyrir ólöglega stafi
error = "Vinsamlegast sláðu inn gilt netfang.n";
} annað ef (fld.value.match(illegalChars)) {
error = "Vinsamlegast sláðu inn gilt netfang.n";
}
skila villa;
}
fall validateEmail(fld) {
var villa="";
var tfld = trim(fld.value); // gildi reitsins með bili klippt af
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == „Sláðu inn netfangið þitt“) {
error = "Vinsamlegast sláðu inn netfangið þitt.n";
} else if (!emailFilter.test(tfld)) { //próf tölvupóstur fyrir ólöglega stafi
error = "Vinsamlegast sláðu inn gilt netfang.n";
} annað ef (fld.value.match(illegalChars)) {
error = "Vinsamlegast sláðu inn gilt netfang.n";
}
skila villa;
}
fall validateEmail(fld) {
var villa="";
var tfld = trim(fld.value); // gildi reitsins með bili klippt af
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/ ;
var illegalChars= /[(),;:\”[]]/ ;
if (fld.value == „Sláðu inn netfangið þitt“) {
error = "Vinsamlegast sláðu inn netfangið þitt.n";
} else if (!emailFilter.test(tfld)) { //próf tölvupóstur fyrir ólöglega stafi
error = "Vinsamlegast sláðu inn gilt netfang.n";
} annað ef (fld.value.match(illegalChars)) {
error = "Vinsamlegast sláðu inn gilt netfang.n";
}
skila villa;
}
aðgerðaklippa(r)
{
skila s.replace(/^s+|s+$/, ”);
}
aðgerðaklippa(r)
{
skila s.replace(/^s+|s+$/, ”);
}
'.focus' er fall, það ætti að vera:
email.focus()
'.focus' er fall, það ætti að vera:
email.focus()
ógnvekjandi
Virkar eins og gimsteinn.. Frábær notkun á reg tjáningum í javascript…
Það er sprunga í gimsteininum…
Heimilisfangið „mmm@mmm..com“ verður samþykkt. En tveir punktar saman eru ekki gildir.
Krakkar, notaðu. Það þarf ekki neina JS staðfestingu.
En virkar aðeins með nútíma vöfrum. Því miður hefur heimurinn ekki náð sér á strik ennþá. —
Sent frá Pósthólfinu fyrir iPhone