Некаторы час таму я паставіў Праверка надзейнасці пароля з выкарыстаннем JavaScript і рэгулярных выразаў. У той жа нататцы вы таксама можаце праверыць структуру адраса электроннай пошты, выкарыстоўваючы тую ж метадалогію рэгулярных выразаў (рэгулярных выразаў).
Калі ў вашым элеменце формы ёсць id = ”адрас электроннай пошты” і вы дадаеце форму onSubmit = ”вярнуць checkEmail ();", Гэта функцыя Javascript, якую вы можаце выкарыстоўваць для вяртання папярэджання, калі адрас электроннай пошты мае правільную структуру ці не:
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; } }
Функцыя правярае змест электроннага паведамлення да зместу фільтра. Калі параўнанне не атрымалася, яно выскачыць папярэджанне і верне фокус назад у поле адраса электроннай пошты!
Для формаў з некалькімі адрасамі электроннай пошты было б добра зрабіць class = ”e-mailадрэса”. Калі ў вас ёсць бібліятэка prototype.js (http://www.prototypejs.org), уключаны на старонку, вы можаце зрабіць нешта накшталт гэтага:
var сапраўдны = праўда;
var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
$$ ('. emailaddress'). кожны (функцыя (электронная пошта) {
if (! filter.test (email.value)) {
папярэджанне (? Калі ласка, увядзіце сапраўдны адрас электроннай пошты?);
email.focus;
сапраўдны = ілжывы;
}
});
вяртанне сапраўднае;
Дзякуй Адэ! Мне трэба будзе даведацца больш пра класы і JavaScript!
Арыгінальны прыклад Дага быў круты, але гэты замярзае! Я не ведаў, што можна апрацоўваць элементы, якія маюць клас, такім чынам, і функцыянальны сінтаксіс цудоўны.
Адэ і яго каманда дзівосныя!
Прыемна, я заўсёды магу разлічваць на цябе за нейкія злыя крутыя сцэнарыі! 🙂
Дзякуй Тоні!
Мне падабаецца гэтая ідэя, але я б вагаўся прыняць гэты канкрэтны рэгулярны выраз без апісання, якія законныя адрасы электроннай пошты ён не прымае і якія незаконныя адрасы ён дазваляе.
Для прыкладу рэгулярнага выразу, які робіць годную працу разам з тлумачэннем, якіх выпадкаў ён не ахоплівае, глядзіце наступнае:
http://www.regular-expressions.info/email.html
Мае асабістыя перавагі - ахапіць большасць простых выпадкаў і вынесці папярэджанне за ўсё астатняе, а не адхіляць яго. Калі Боб сапраўды хоча sto прадставіць bob@com.museum а ня bob@museum.com, чаму б яму не дазволіць?
Прывітанне Рэг,
Вы можаце выпрабаваць Regex, выкарыстоўваючы Інтэрнэт-тэстар Regex.
Акрамя таго, напэўна, можна зрабіць шмат іншага, калі вы хочаце забяспечыць адрас электроннай пошты дзейнічае ў адпаведнасці з RFC.
Ёсць некалькі прычын, каб не дазволіць каму-небудзь увесці несапраўдны адрас электроннай пошты:
1. Яны будуць раздражняцца на вас, калі электронная пошта, якую яны чакалі, не праходзіць - незалежна ад таго, ці не па вашай віне, адрас быў уведзены няправільна.
2. Калі com.museum быў сапраўдным даменам і, скажам, Yahoo! кіраваў ім - любы адрас электроннай пошты, які падскочыў, негатыўна адаб'ецца на рэпутацыі вашай кампаніі па дастаўцы электроннай пошты. Гэта можа прывесці да блакавання ўсёй электроннай пошты вашай кампаніі.
3. Калі ваш правайдэр электроннай пошты дазволіў вам увайсці bob@com.museum, вы таксама будзеце плаціць за кожны ліст, адпраўлены на гэты адрас электроннай пошты, пакуль яны не адпішуцца на гэты адрас з-за адмоў. Я б пазбягаў любога ESP, які дазваляў бы ўводзіць несапраўдны адрас электроннай пошты - яны проста бяруць вашы грошы!
Дзякуй за прыпынак!
Doug
Ідэальна, якраз тое, што мне трэба было!
Ёсць нашмат больш просты спосаб напісаць выраз:
var regex = /^[a-z0-9\._-]+@([a-z0-9_-]+\.)+[a-z]{2,6}$/i;
- У канчатковым мадыфікатары / i няма неабходнасці ўказваць верхні дыяпазон.
- Я не ведаю ніводнага TLD з лічбамі ў ім.
У заўвазе я дазваляю TLD да 6 сімвалаў; новыя прыбываюць рэгулярна, і вы ніколі не ведаеце (ну, у будучых, магчыма, нават ёсць нумары, я ведаю).
Прывітанне там,
Я імкнуся выкарыстоўваць гэта ў існуючай форме ў рэжыме рэальнага часу, але, здаецца, гэта не спраўджваецца ў рэжыме рэальнага часу, як праверка надзейнасці пароля ...
Ці я проста такі недасведчаны, і гэта не працуе для мяне?
Дарэчы, мне вельмі падабаецца тое, што вы тут робіце, вашы падручнікі вельмі простыя, я, безумоўна, зраблю закладку на гэты ...
Проста FYI; Я не спрабаваў рашэнне Ade, але ўзор вышэй не правярае адрасы электроннай пошты з апострафамі ў іх .. (напрыклад, Mike.O'Hare@Whatever.com). Апостраф сапраўдны ў адпаведнасці з RFC 2821/2822 -> http://www.faqs.org/rfcs/rfc2822.html
HTH,
Sanjay
Здаецца, ён таксама не апрацоўвае знак плюса, які з'яўляецца сапраўдным.
Гл.: http://www.dominicsayers.com/isemail/
Больш за ўсё, гэта ключавая праблема выразання і ўстаўкі кода, якая заслугоўвае поўнага абмеркавання сама па сабе.
@ robbyslaughter.com
ты нуц ..
ён працуе нармальна ..! @
Было б выдатна, калі б мы змаглі знайсці рашэнне пазбегнуць фальшывых адрасоў электроннай пошты ў каментарыях на WordPress
Проста невялікая выпраўка: рэгулярны выраз мае ў канцы лішні () +. У ім павінна быць напісана:
^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$
З першым будзе прынята любыя даўжыні TLD (што не з'яўляецца непраўдзівай памылкай, як адзначаюць іншыя, але калі б гэта было мэтай, выраз можна было б скараціць).
Ці можаце вы растлумачыць рэгулярны выраз гэтага кода і як ён працуе? Таксама пра .test - гэта .test - гэта заява па змаўчанні ў javascript для праверкі рэчаў, як вы рабілі ў кодзе вышэй?
Гэта кароткі код для выраза электроннай пошты-
функцыя validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
вярнуць emailPattern.test (id);
}
Дзіпак Рай
варанасі
Гэта кароткі код для выраза электроннай пошты-
функцыя validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
вярнуць emailPattern.test (id);
}
Дзіпак Рай
варанасі
Дзякуй вялікі дзядзька. Гэта мне вельмі дапамагло 🙂
Аманда
дзякуй за код!
Дзякуй, але ў гэтым выразным выражэнні ёсць памылка. Я не эксперт па регулярных выразах, але паспрабаваў адправіць электронную пошту:
test @ test
і ён прайшоў рэгулярны выраз ... Я заўважыў, што яму не хапае "". так павінна быць:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
Ім коцяцца з
. /
а як наконт .info?
о, дзярмо ... 3 гады таму? : S
Ну, гэта проста грубая праверка, але не на 100% дакладная, напрыклад, гэта будзе нармальна john_doe. @ gmail.com які на самай справе не з'яўляецца сапраўдным адрасам электроннай пошты (кропка не дапускаецца як апошні знак у лакальнай частцы электроннай пошты).
Таксама ён прыняў бы джон…doe@gmail.com што таксама з'яўляецца несапраўдным, паколькі ў паслядоўнасці не можа быць больш адной кропкі.
Гэта толькі некаторыя хібы, якія я заўважыў з першага погляду.
Я маю намер не разбівацца, каб проста адзначыць гэта на той выпадак, калі нехта плануе выкарыстаць гэта ў якасці праверкі бяспекі - недастаткова бяспечна.
Для атрымання інфармацыі пра сапраўдныя адрасы электроннай пошты праверце гэта: http://en.wikipedia.org/wiki/E-mail_address
Дыпак,
На самай справе, я думаю, вам трэба ўжыць экранацыю для кропкі ("."). Такім чынам, замест гэтага павінна быць ваша функцыя:
функцыя validateEmail (id)
{
var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.
вярнуць emailPattern.test (id);
}
У адваротным выпадку кропка будзе азначаць "любы знак". Я лічу, што ад такіх асаблівых персанажаў трэба пазбягаць.
З павагай,
Федэрыка
функцыя validateEmail (fld) {
памылка var = "";
var tfld = абрэзаць (fld.value); // значэнне поля з абрэзаным прабелам
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
var незаконныяChars = / [(),;: \ ”[]] /;
if (fld.value == "Увядзіце свой адрас электроннай пошты") {
error = "Калі ласка, увядзіце свой адрас электроннай пошты.n";
} інакш калі (! emailFilter.test (tfld)) {// праверыць электронную пошту на наяўнасць незаконных сімвалаў
error = "Калі ласка, увядзіце сапраўдны адрас электроннай пошты.n";
} інакш калі (fld.value.match (незаконныя знакі)) {
error = "Калі ласка, увядзіце сапраўдны адрас электроннай пошты.n";
}
памылка вяртання;
}
функцыя validateEmail (fld) {
памылка var = "";
var tfld = абрэзаць (fld.value); // значэнне поля з абрэзаным прабелам
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
var незаконныяChars = / [(),;: \ ”[]] /;
if (fld.value == "Увядзіце свой адрас электроннай пошты") {
error = "Калі ласка, увядзіце свой адрас электроннай пошты.n";
} інакш калі (! emailFilter.test (tfld)) {// праверыць электронную пошту на наяўнасць незаконных сімвалаў
error = "Калі ласка, увядзіце сапраўдны адрас электроннай пошты.n";
} інакш калі (fld.value.match (незаконныя знакі)) {
error = "Калі ласка, увядзіце сапраўдны адрас электроннай пошты.n";
}
памылка вяртання;
}
функцыя validateEmail (fld) {
памылка var = "";
var tfld = абрэзаць (fld.value); // значэнне поля з абрэзаным прабелам
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
var незаконныяChars = / [(),;: \ ”[]] /;
if (fld.value == "Увядзіце свой адрас электроннай пошты") {
error = "Калі ласка, увядзіце свой адрас электроннай пошты.n";
} інакш калі (! emailFilter.test (tfld)) {// праверыць электронную пошту на наяўнасць незаконных сімвалаў
error = "Калі ласка, увядзіце сапраўдны адрас электроннай пошты.n";
} інакш калі (fld.value.match (незаконныя знакі)) {
error = "Калі ласка, увядзіце сапраўдны адрас электроннай пошты.n";
}
памылка вяртання;
}
функцыя validateEmail (fld) {
памылка var = "";
var tfld = абрэзаць (fld.value); // значэнне поля з абрэзаным прабелам
var emailFilter = /^[^@]+@[^@.]+.[^@]*ww$/;
var незаконныяChars = / [(),;: \ ”[]] /;
if (fld.value == "Увядзіце свой адрас электроннай пошты") {
error = "Калі ласка, увядзіце свой адрас электроннай пошты.n";
} інакш калі (! emailFilter.test (tfld)) {// праверыць электронную пошту на наяўнасць незаконных сімвалаў
error = "Калі ласка, увядзіце сапраўдны адрас электроннай пошты.n";
} інакш калі (fld.value.match (незаконныя знакі)) {
error = "Калі ласка, увядзіце сапраўдны адрас электроннай пошты.n";
}
памылка вяртання;
}
функцыя аздабленне
{
вярнуць s.replace (/ ^ s + | s + $ /, ”);
}
функцыя аздабленне
{
вярнуць s.replace (/ ^ s + | s + $ /, ”);
}
".Focus" - гэта функцыя, яна павінна быць:
email.focus ()
".Focus" - гэта функцыя, яна павінна быць:
email.focus ()
дзіўны
Працуе як каштоўны камень .. Выдатнае выкарыстанне выразаў reg у javascript ...
Гэта шчыліна ў самацвеце ...
Адрас "mmm @ mmm..com" будзе прыняты. Але дзве кропкі разам не дзейнічаюць.
Хлопцы, выкарыстоўвайце. Ён не патрабуе ніякай праверкі JS.
Але працуе толькі з сучаснымі браўзэрамі. На жаль, свет яшчэ не дагнаў. -
Адпраўлена з паштовай скрыні для iPhone