Ilang sandali ang nakaraan ay nagtiis ako a Ang Checker ng Lakas ng Password gamit ang JavaScript at Regular na Mga expression. Sa parehong tala na iyon, maaari mo ring suriin ang istraktura ng isang email address na gumagamit ng parehong regular na pamamaraan ng expression (regex).
Kung ang iyong elemento ng form ay mayroong id = "emailaddress" at nagdagdag ka ng isang form onSubmit = "return checkEmail ();", Ito ay isang pagpapaandar ng Javascript na maaari mong magamit upang maibalik ang isang alerto kung ang email address ay may wastong istraktura o hindi:
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; } }
Ang pagpapatakbo ay nagpapatunay ng mga nilalaman ng email sa na ng filter. Kung nabigo ang paghahambing, pop up ito ng isang alerto at ibabalik ang pokus sa patlang ng email address!
Para sa mga form na may maraming mga email address, makabubuting gawin ang class = ”emailaddress”. Kung mayroon kang prototype.js library (http://www.prototypejs.org) kasama sa pahina maaari kang gumawa ng tulad nito:
var valid = totoo;
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
$$ ('. emailaddress'). bawat isa (pagpapaandar (email) {
kung (! filter.test (email.value)) {
alerto (? Mangyaring magbigay ng wastong email address?);
email.focus;
wasto = false;
}
});
bumalik balido;
Salamat Ade! Kakailanganin kong matuto nang higit pa tungkol sa mga klase at JavaScript!
Ang orihinal na halimbawa ni Doug ay cool, ngunit ang isang ito ay nagyeyelong! Hindi ko alam na maaari mong iproseso ang mga elemento ng pagkakaroon ng isang klase sa ganitong paraan, at ang functional syntax ay matamis.
Nakakagulat si Ade at ang kanyang koponan!
Maganda, lagi kong maaasahan sa iyo para sa ilang masasamang cool na script! 🙂
Salamat Tony!
Gusto ko ang ideya, ngunit mag-aalangan ako na gamitin ang partikular na regular na expression nang walang paglalarawan kung aling mga ligal na email address ang hindi nito tinanggap at aling mga iligal na address ang pinapayagan nito.
Para sa isang halimbawa ng isang regular na expression na gumagawa ng disenteng trabaho kasabay ng isang paliwanag kung aling mga kaso ang hindi nito sakop, tingnan ito:
http://www.regular-expressions.info/email.html
Ang aking personal na kagustuhan ay upang sakupin ang karamihan sa mga simpleng kaso at mag-isyu ng isang babala para sa lahat pa sa halip na tanggihan ito. Kung gusto talaga ni Bob isumite ang sto bob@com.museum sa halip na bob@museum.com, bakit hindi mo siya payagan?
Kumusta Reg,
Maaari mong subukan ang Regex na gumagamit ng isang Online Regex Tester.
Gayundin, tiyak na mas marami pa ang maaaring magawa kung nais mong matiyak ang email address ay wasto alinsunod sa RFC.
Mayroong ilang mga kadahilanan upang hindi payagan ang isang tao na magpasok ng isang hindi wastong email address:
1. Maiinis sila sa iyo kapag hindi na nakalusot ang email na inaasahan nila - hindi alintana kung ikaw ang may kasalanan o hindi wastong naipasok ang address.
2. Kung ang com.museum ay isang wastong domain at, sabihin nating, Yahoo! pinamamahalaan ito - ang anumang email address na nag-bounce ay maaaring magkaroon ng negatibong epekto sa reputasyon ng iyong kumpanya para sa paghahatid ng email. Maaari itong humantong sa lahat ng email ng iyong kumpanya ay na-block.
3. Kung pinayagan ka ng iyong email service provider na pumasok bob@com.museum, babayaran mo rin ang bawat email na ipinadala sa email address na iyon hanggang sa ma-unsubscribe nila ang address na iyon dahil sa mga bounces. Gusto kong iwanan ang anumang ESP na magpapahintulot sa isang hindi wastong email address na tulad nito - Kinukuha lang nila ang iyong pera!
Salamat sa pagdating!
Doug
Perpekto, kung ano ang kailangan ko!
Mayroong mas simpleng paraan upang isulat ang expression:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
- Gamit ang pangwakas na modifier / i hindi na kailangang ipahiwatig ang itaas na saklaw ng kaso.
- Wala akong alam TLD may mga numero dito.
Sa isang tala sa gilid, pinapayagan ko ang TLD na may hanggang sa 6 chars; ang mga bago ay regular na dumarating at hindi mo alam (mabuti, kahit na ang mga hinaharap ay maaaring may mga numero dito, alam ko).
Kamusta,
Tring ko itong gagamitin sa isang mayroon nang form sa real-time, ngunit hindi ito lumilitaw na nagpapatunay sa realtime tulad ng iyong checker ng lakas ng password…
O, ako lang ba ang clueless, at hindi ito gumagana para sa akin?
btw, gusto ko talaga kung ano ang nangyayari dito, ang iyong mga tutorial ay napaka-simple, tiyak na mai-bookmark ko ang isang ito….
Isang FYI lamang; Hindi ko pa nasubukan ang solusyon ni Ade ngunit ang pattern sa itaas ay hindi nagpapatunay ng mga e-mail address na may mga apostrophes sa kanila .. (hal, Mike.O'Hare@Whhever.com). Ang mga Apostrophes ay wasto sa bawat RFC 2821/2822 -> http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
Hindi rin ito lilitaw upang hawakan ang plus character, na wasto.
Tingnan ang: http://www.dominicsayers.com/isemail/
Sa isang mas malaking tala, ito ay isang pangunahing problema sa cutting-and-pasteing code, isa na nararapat na isang buong talakayan mismo.
@ robbyslaughter.com
ikaw si nutz ..
gumagana ito ng maayos ..! @
Mabuti kung makakahanap kami ng solusyon upang maiwasan ang mga pekeng e-mail address sa mga komento sa WordPress
Isang maliit na pagwawasto lamang: Ang regular na expression ay may dagdag () + sa dulo. Dapat basahin ito:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
Sa una sa anumang haba ang mga TLD ay tatanggapin (na hindi intrinsecally mali tulad ng itinuro ng iba, ngunit kung iyon ang intensyon ang expression ay maaaring paikliin).
Maaari mo bang ipaliwanag ang regular na pagpapahayag ng code na ito at kung paano ito gumagana? Tungkol din sa .test - Ang .test ba ay isang default na pahayag sa javascript upang suriin ang mga bagay na tulad ng ginawa mo sa code sa itaas?
Ito ay isang maikling code para sa pagpapahayag ng email-
pagpapaandar validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._ -
ibalik ang emailPattern.test (id);
}
Deepak Rai
varanasi
Ito ay isang maikling code para sa pagpapahayag ng email-
pagpapaandar validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._ -
ibalik ang emailPattern.test (id);
}
Deepak Rai
varanasi
Maraming salamat tito. Malaki ang naitulong sa akin 🙂
Amanda
salamat sa code!
Salamat, ngunit may isang error sa regex na ito. Hindi ako dalubhasa sa regex, ngunit sumubok ako ng email:
pagsubok @ pagsubok
at naipasa nito ang regex ... Napansin kong kulang ito sa pagtakas sa "." kaya dapat ito ay:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
Gumulong ako kasama
/ ^^ \ /
at paano ang .info's?
oh shit ... 3 taon na ang nakakaraan? : S
Sa gayon, ito ay isang magaspang lamang na tseke ngunit hindi 100% tumpak, halimbawa magiging okay ito john_doe. @ gmail.com na kung saan ay talagang hindi wastong e-mail address (hindi pinapayagan ang tuldok bilang isang huling karakter sa lokal na bahagi ng e-mail).
Tanggapin din nito john…doe@gmail.com na hindi wasto din dahil hindi maaaring may higit sa isang tuldok sa isang pagkakasunud-sunod.
Ito ay ilan lamang sa mga kamalian na napansin ko sa unang tingin.
Ang aking hangarin ay hindi bashing upang maituro lamang ito kung sakaling may nagpaplano na gamitin ito bilang isang security check - hindi sapat na ligtas.
Para sa impormasyon tungkol sa wastong mga e-mail address suriin ito: http://en.wikipedia.org/wiki/E-mail_address
Deepak,
Sa totoo lang, sa palagay ko kailangan mong mag-apply ng pagtakas para sa tuldok ("."). Kaya, dapat ang iyong pagpapaandar, sa halip:
pagpapaandar validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._ -
ibalik ang emailPattern.test (id);
}
Kung hindi man, ang tuldok ay nangangahulugang "anumang character". Naniniwala akong kailangang makatakas ang mga nasabing espesyal na character.
Regards,
Federico
pagpapaandar validateEmail (fld) {
var error = "";
var tfld = trim (fld.value); // halaga ng patlang na may puting puti pinutol
var emailFilter = /^[ ###@iwan+@[^@.iwan+.[^@iwan*ww$/;
var illegalChars = / [(),;: \ ”[]] /;
kung (fld.value == "Ipasok ang iyong email Address") {
error = "Mangyaring ipasok ang iyong Email address.n";
} iba pa kung (! emailFilter.test (tfld)) {// pagsubok ng email para sa mga iligal na character
error = "Mangyaring maglagay ng wastong email address.n";
} iba pa kung (fld.value.match (illegalChars)) {
error = "Mangyaring maglagay ng wastong email address.n";
}
bumalik error;
}
pagpapaandar validateEmail (fld) {
var error = "";
var tfld = trim (fld.value); // halaga ng patlang na may puting puti pinutol
var emailFilter = /^[ ###@iwan+@[^@.iwan+.[^@iwan*ww$/;
var illegalChars = / [(),;: \ ”[]] /;
kung (fld.value == "Ipasok ang iyong email Address") {
error = "Mangyaring ipasok ang iyong Email address.n";
} iba pa kung (! emailFilter.test (tfld)) {// pagsubok ng email para sa mga iligal na character
error = "Mangyaring maglagay ng wastong email address.n";
} iba pa kung (fld.value.match (illegalChars)) {
error = "Mangyaring maglagay ng wastong email address.n";
}
bumalik error;
}
pagpapaandar validateEmail (fld) {
var error = "";
var tfld = trim (fld.value); // halaga ng patlang na may puting puti pinutol
var emailFilter = /^[ ###@iwan+@[^@.iwan+.[^@iwan*ww$/;
var illegalChars = / [(),;: \ ”[]] /;
kung (fld.value == "Ipasok ang iyong email Address") {
error = "Mangyaring ipasok ang iyong Email address.n";
} iba pa kung (! emailFilter.test (tfld)) {// pagsubok ng email para sa mga iligal na character
error = "Mangyaring maglagay ng wastong email address.n";
} iba pa kung (fld.value.match (illegalChars)) {
error = "Mangyaring maglagay ng wastong email address.n";
}
bumalik error;
}
pagpapaandar validateEmail (fld) {
var error = "";
var tfld = trim (fld.value); // halaga ng patlang na may puting puti pinutol
var emailFilter = /^[ ###@iwan+@[^@.iwan+.[^@iwan*ww$/;
var illegalChars = / [(),;: \ ”[]] /;
kung (fld.value == "Ipasok ang iyong email Address") {
error = "Mangyaring ipasok ang iyong Email address.n";
} iba pa kung (! emailFilter.test (tfld)) {// pagsubok ng email para sa mga iligal na character
error = "Mangyaring maglagay ng wastong email address.n";
} iba pa kung (fld.value.match (illegalChars)) {
error = "Mangyaring maglagay ng wastong email address.n";
}
bumalik error;
}
(mga) pagpapaandar na function
{
ibalik ang s.replace (/ ^ s + | s + $ /, ”);
}
(mga) pagpapaandar na function
{
ibalik ang s.replace (/ ^ s + | s + $ /, ”);
}
Ang '.focus' ay isang pagpapaandar, dapat itong:
email.focus ()
Ang '.focus' ay isang pagpapaandar, dapat itong:
email.focus ()
Kahanga-hangang
Gumagana tulad ng hiyas .. Mahusay na paggamit ng mga reg expression sa javascript…
Ito ay pumutok sa hiyas ...
Ang address na "mmm @ mmm..com" ay tatanggapin. Ngunit ang dalawang tuldok na magkasama ay hindi wasto.
Mga Fellas, gamitin. Hindi ito nangangailangan ng anumang pagpapatunay ng JS.
Ngunit gumagana lamang sa mga modernong browser. Sa kasamaang palad, ang mundo ay hindi pa nakakakuha. -
Ipinadala mula sa Mailbox para sa iPhone