Регулярное выражение для проверки email javascript
Проверка адреса email и номера телефона на javascript
Предоставляя пользователю возможность заполнения полей на сайте, следует проверять введенные данные на валидность. Это позволит предупредить пользователя о случайных ошибках, а так же даст дополнительную защиту от спама. Ярким примером является форма обратной связи, обязательными полями которой часто бывают email и телефон. Займемся их проверкой на правильность заполнения с помощью javascript.
Информация лучше воспринимается на примерах, поэтому посмотрим готовую форму в действии:
Пожалуйста, заполните все поля формы!
Для начала разберем применяемые регулярные выражения, а полный код формы и javascript функций я приведу в конце статьи.
Валидность адреса электронной почты
Рассмотрим адрес электронной почты (test@mail.ru). Вот его обязательные части:
- Название (test) — один или много символов;
- Знак собаки (@);
- Доменное имя почтового сервера (mail) — один или много символов;
- Точка (.);
- Доменное имя первого уровня (ru) от двух до пяти букв.
Составим регулярное выражение для наших требований:
Разберём правило по частям:
- Регулярное выражение должно открываться и закрываться символами «/» . После закрывающегося символа можно указать директиву. В нашем случае такой директивной является «i» , которая отключает проверку вводимых букв на регистр. То есть, становится не важно, ввели «test@mail.ru» или «Test@Mail.RU».
- Знаки «^» и «$» обозначают начало и конец проверяемой строки. Если их убрать, то правило вернет положительный результат даже если в начале или конце электронного адреса поставить запрещенные знаки. То есть, при вводе «%:&test@mail.ru#6&» функция проверки вернет положительный результат, так как в строке имеется последовательность символов, удовлетворяющая нашему правилу. Для исключения такой возможности указываем, что правило должно применяться ко всей строке, а не к её части.
- Блок «[w-.]+» отвечает за проверку названия ящика. В квадратных скобках указываем разрешенные символы: «w» — все латинские буквы, цифры и знак подчеркивания. Так же рекомендую добавлять знак тире и точку «-.» . «+» после квадратных скобок указывает на возможность повторения символов — один или много раз.
- Далее идет знак собаки и доменное имя почтового сервера — «@[w-]+» . Здесь практически тоже самое что и в предыдущем блоке. Исключаем только из набора символов точку.
- Осталось прописать правило для проверки наличия точки и корректности доменного имени верхнего уровня (ru,com,info). «.[a-z]<2,4>» . Для обозначения знака точки мы указываем её с обратным слешем «.» Без него она будет восприниматься зарезервированным символом регулярки, который обозначает возможность наличия на её месте любого символа. За точкой должно следовать доменное имя верхнего уровня. Это минимум 2 латинские буквы — «[a-z]<2,4>» .
Разобранный пример немного упрощен для лучшего восприятия. У него есть недостаток — первым знаком в email не может быть тире или точка, но приведенное регулярное выражение этого не учитывает. Чтобы это исправить следует его немного поправить:
Проверка валидности номера телефона в javascript
С номером телефона ситуация сложнее, так как номер можно ввести десятками способов:
Есть несколько выходов из ситуации:
- продумать все возможные шаблоны и составлять для них правила;
- заставить посетителя вводить телефон по определенному шаблону;
- ограничиться проверкой на случайные ошибки.
Для форм обратной связи последний вариант кажется наилучшим. Во-первых, если человек не хочет указывать свой номер телефона, то никакие проверки на корректность не помогут. Он просто введет несуществующий или чужой номер. Во-вторых, посетители сайта не любят когда их загоняют в определенные рамки. Поэтому рекомендую использовать регулярное выражение следующего типа:
В правиле указываем что первый и последний знак должен быть обязательно цифрой — «d» , а в середине разрешаем использовать знаки скобок, пробел и знак дефиса — «[d() -]<4,14>» , от 4 до 14 символов. Так как скобки и пробел являются зарезервированными элементами регулярных выражений, перед ними ставим обратный слеш.
Для любителей жестких шаблонов приведу пример проверки номера вида 8 (999) 123-45-64
Исходный код примера: html и javascript
Это полный код тестовой странички, на которой я использовал форму и js скрипты для отладки правил из этой статьи. Можете скопировать его и протестировать у себя на компьютере.
Это демонстрационная версия. В случае с формой обратной связи нам следует проводить проверку полей не при нажатии на кнопку, а при попытке отправить её:
Регулярное выражение для проверки email javascript
WEB-разработчик, внедрение CRM. Программист Laravel. Это не сайт очередной web-студии. Я опытный фрилансер, давно работающий на рынке it-услуг.
Акция! Профессиональный разработчик CRM за 1000 руб. в час
Выделю время под ваш проект. Знания технологий Vtiger CRM, SuiteCRM, Laravel, Vue.js. Предлагаю варианты сотрудничества, которые помогут вам воспользоваться преимуществами внешнего опыта, оптимизировать затраты и снизить риски. Полная прозрачность всех этапов работы и учёт временных затрат. Оплачивайте только рабочие часы разработки после приемки задачи. Экономьте на платежах по его содержанию разработчика в штате. Возможно заключение договора по ИП. С чего начать, чтобы нанять профессионального разработчика на full-time?
Или просто позвоните по телефону: +79876757777
Обо мне
Я — частный php-разрабочик, специализируюсь на внедрении и настройке Vtiger CRM. На моём сайте Вы найдете описания предлагаемых мною решений и услуг, разработанных модулей и плагинов для системы Vtiger CRM, примеры работ, полезные статьи, библиотеки, ссылки и онлайн-сервисы, а также информацию подробную информацию обо мне.
При внедрении и проектировании систем я в первую очередь выбираю решения с открытым исходным кодом, которые не требуют лицензионных отчислений и ежемесячных платежей. Свой профессиональный стаж в сфере программирования я начал в 2008 году. За это время реализовано огромное количество проектов, разработано десятки модулей. Регулярно участвую в различных форумах, семинарах, конференциях.
Владение инструментами
Sugar CRM 85 %
Vtiger CRM 90 %
Laravel 70 %
PHP 95 %
Javascript 75 %
что я могу вам предложить
Я создаю эффективные программные решения для бизнеса на базе свободного программного обеспечения (СПО) в области систем автоматизации бизнес-процессов, CRM- и ERP-систем; осуществляю внеднение CRM, настройку Vtiger CRM.
Внедрение CRM
Настраиваю, обучаю пользователей, создаю модули специально под потребности бизнеса. Анализирую и автоматизирую бизнес-процессы. Никаких скрытых платежей.
Внедрение ERP
Автоматизация производства и производственных процессов, управление складом. Внедрение открытых решений на базе ODOO и Vtiger CRM. Обучение пользователей.
Управление инфраструктурой
Внедрение IP-телефонии, систем мониторинга и контроля за пользователями. Автоматизация резервного копирования на базе Bacula. Настройка и поддержка серверов.
Создание сайтов
Создание сайтов любой сложности качественно и быстро. Создаются на базе Laravel, максимально адаптированы для работы по поисковой оптимизации. Без необходимости написания ТЗ.
Разработка ПО
Разрабатываю WEB-прибложения и WEB-сервисы на открытой платформе, в том числе и высоконагруженные приложения. Все программы — кроссплатформенные и гибкие.
Обучение пользователей
Проконсультирую разработчиков ПО и системных администраторов. Научу пользователей работе в CRM. Подберу оптимальное решение для бизнеса. Проведу ИТ-аудит.
Последние реализованные проекты
В данном разделе представлены наиболее интересные и успешно реализованные мною проекты за последнее время. Кроме того, обо всех заслуживающих внимания проектах я рассказываю читателям в Блоге.
Модуль «План продаж» для VtigerCRM
Модуль интеграции 1с и VtigerCRM
Модуль «Финансовое состояние контрагента»
Виджет «Курсы валют» для VtigerCRM
Интеграция клиент-банка Точка с системой Vtiger
Разработка модуля «Обратная связь»
Отзывы
Используемые мною технологии позволяют предлагать клиентам многократно проверенное надёжное программное обеспечение, основанное на открытых стандартах отрасли, по разумной цене и в сжатые сроки.
Спасибо Сергею Емельянову за комплексный подход в автоматизации КПК. Финансовый сектор характеризуется плотной конкуренцией и жёстким законодательным регулированием. Индивидуальный подход и надёжные решения позволили добиться роста количества выданных займов на потребительские нужды, средней сумма сбережений в расчёте на одного пайщика и общей суммы кредитного портфеля.
Хамзин Ильдус Мубинович, председатель РСК
Наша компания сотрудничает с Сергеем Емельяновым с 2010 года по различным направлением консалтинга, включающим внедрение CRM, разработку сайтов, обучение персонала. За время своей работы Сергей показал себя как профессионал высокого уровня, заинтересованный в развитии компании и увеличении её доходности. Также считаю компанию Сергея Емельянова честным и порядочным партнёром, всегда соблюдающим условия договорённостей и занимающим позицию клиента.
Евгений Николаев, компания Продвижение
Юридическое агентство всегда следует принципу «Помогай клиентам в самой сложной ситуации». И это касается не только наших услуг. Мы уверены, что помогать клиентам и при реализации маркетинговых кампаний — это проявление уважения к нашим клиентам. Сергей Емельянов стал для нас помощником, который эффективно и со значительной экономией бюджета помог нам донести принципы «Юрбюро» до потенциальных клиентов. Вместе мы с лёгкостью справляемся и с текущей работой и с неожиданными техническими проблемами.
Берман Анна Андреевна, директор Юридического Бюро
Недавние публикации в блоге
Широкое применение СПО в моих решениях позволяет упростить дальнейшее обслуживание и сопровождение создаваемых систем техническими специалистами и избежать привязки к поставщику. Как я этого добиваюсь, читайте в моих публикациях.
Добавляем в Vtiger CRM функционал по удалению комментариев
По умолчанию в Vtiger CRM отсутствует функционал по удалению комментарией. Вы можете добавлять их, редактировать или отвечать на них. Но не удалять. Ниже я приложил подробную инструкцию о том, как можно реализовать данную возможность. Для этого вам потребуется доступ к файлам CRM. Никаких изменений в базу данных не требуется.
Редактор полей в Vtiger CRM. Активируем возможность задавать собственное имя поля.
Vtiger CRM даёт нам отличную возможность быстро и легко созавать поля в любом модуле. Но при таком подходе есть одна загвоздка. В редакторе полей вы можете задавать заголовок поля, даже его длину, но при создании система назначает имя вновь созданному полю автоматически, при этом имя будет совсем нечитаемым, например cf_997. Где cf — сокращённо «Custom Field», а 997 — это номер нового поля.
Функции по созданию связи один ко многим в Vtiger CRM
Программисты и разработчики задаются вопросом: «Как связать модули в Vtiger CRM между собой?». При этом, самая распространённая связь между модулями — это 1 ко многим. Эта связь означает, что в карточке родительского (или основного) модуля присутствует поле, в котором вы можете выбрать нужную запись дочернего модуля. А в карточке дочернего модуля есть вкладка, при клике на которую вы можете увидеть все связанные с этой карточкой записи.
Обо мне
Я создаю эффективные программные решения для бизнеса на базе свободного программного обеспечения (СПО) в области систем автоматизации бизнес-процессов, CRM- и ERP-систем; осуществляю внедрение CRM, настройку CRM систем.
Новостная рассылка
Будьте в курсе самых последних новостей и кейсов с сфере информационных технологий
Веб-заметки и Веб-подсказки
Регулярные выражения для проверки e-mail, URL и номера телефона
Поскольку, очень часто приходится использовать такие шаблонные регулярные выражения, я решил сделать о них заметку, чтобы они были всегда под рукой:
Регулярное выражение для проверки корректности e-mail
(пример: «nick@mail.com»):
^([a-z0-9_-]+.)*[a-z0-9_-]+@[a-z0-9_-]+(.[a-z0-9_-]+)*.[a-z]<2,6>$
Регулярное выражение для проверки корректности URL
(пример: «http://www.my-site.com»):
^((https?|ftp)://)?([a-z0-9]<1>)((.[a-z0-9-])|([a-z0-9-]))*.([a-z]<2,6>)(/?)$
Регулярное выражение для проверки корректности номера телефона
(пример: «+38(044)555-55-55»):
^+d<2>(d<3>)d<3>-d<2>-d<2>$
Пример использования на JavaScript:
function isValidPhone(myPhone) <
return /^+d<2>(d<3>)d<3>-d<2>-d<2>$/.test(myPhone);
>
30 комментариев на «Регулярные выражения для проверки e-mail, URL и номера телефона»
Спасибо автору!
Хоть кто-то догадался всё в одну кучу собрать, чтоб не искат по сто раз.
В закладки! 🙂
Говорят, домены могут быть до 6 символов ( <2,4>вместо <2,6>)
ОЧЕНЬ ПОЛЕЗНЫЙ МАТЕРИАЛ ОЧЕНЬ МНЕ ПОМОГ
Если в скобки [a-z0-9_-] добавить [A-Za-z0-9_-] , то будет учитывать и заглавные буквы. Вариант только для английского алфавита.
А у вас самих на сайте какой regexp используется? Т. к. указанный мыло вида _@a_._.ru и сайт вида 8-.ru и a.ru пропускает (на сервере тестил)
С точки зрения данных регулярных выражений приведенные примеры являются корректными.
Если они не покрывают Ваши нужды, Вы можете всегда их подкорректировать.
Регулярное выражение для проверки корректности URL допускает варианты http://www.my-site………………………………….com
Для исключения этих вариантов необходимо вместо ([a-z0-9-.]*) написать ((.[a-z0-9-])|([a-z0-9-]))* т.е точка + любой символ из набора либо любой символ из набора.
Спасибо за существенное конструктивное замечание, испавил.
Спасибо большое, это то что я искал!
Для url у меня почему-то не срабатывает для адреса вида http://www.mail.ru/ к примеру
Не работало из-за слэша «/» в конце проверяемого адреса.
Добавил в конце регулярного выражения «(/?)», теперь работает и с ним.
Регулярка рабочая почти во всех случаях!
Проверку имейла не проходит например такой:
support@wb-concept.com.ua
Проходит.
Перепроверьте пожалуйста:
/^([a-z0-9_-]+.)*[a-z0-9_-]+@[a-z0-9_-]+(.[a-z0-9_-]+)*.[a-z]<2,4>$/.test(«support@wb-concept.com.ua»)
// true
подтверждение существования 6-символьных доменов: http://ru.webcams.travel/
somename@somesubdomain.travel не пройдет уже
поправьте на:
/^([a-z0-9_-]+.)*[a-z0-9_-]+@[a-z0-9_-]+(.[a-z0-9_-]+)*.[a-z]<2,6>$/
понимаю, что случай редкий, однако, мало ли..
А как проверить, чтобы в поле для телефона не спамили иносранцы, а то пишут туда латинские буквы, а надо, чтобы поле для телефона пропускало лишь цифры, пробелы, тире и плюс в любом порядке, лишь бы латинские не пропускало и кириллицу тоже. Спасибо.
Подумал сам, и вот примерно так:
^[+]<0,1>[- (),0-9]<7,>$
Спасибо долго искал качественные регулярные выражения
Ругелярка для URL, работает только для разбора домена.
Если например нужно разобрать путь к картинке http://yandex.st/morda-logo/i/logo.png
то лучше:
^(https?|ftp)://[a-zA-Z0-9.-]+.[a-z]<2,>(/.+)$
(лишние «карманы» почистил)
Лучше вот так
$url = ‘http://www.koder.cn.ms/wp-content/uploads/2013/01/ww.png’;
preg_match(‘#^(https?|ftp)://(www.)?([a-zA-Z0-9.-]+.[a-z]<2,>)(/.+)$#’, $url, $match);
Спасибо за статью!
не лучше ли (w+@[a-zA-Z_]+?.[a-zA-Z]<2,6>) для email
Max : » не лучше ли (w+@[a-zA-Z_]+?.[a-zA-Z]<2,6>) для email »
нет не лучше. примеры которые ваш шаблон не пропускает
и т.д.
абсолютно реальные адреса
Данные регулярные выражения для проверки почты не актуальны, т.к. не учитывают русскоязычные домены.
Номер телефона — код страны у Вас обязательно 2 символа. На самом деле может быть от 1 до 4. Например через Ваш шаблон не пройдет код России +7 и Украины +380.
Всё-же для URL, наверное, будет лучше
^((https?|ftp)://)?([a-z0-9]<1>)((.[a-z0-9-])|([a-z0-9-]))*([a-z0-9]<1>).([a-z]<2,6>)(/?)$
а то пропускает ссылки типа mail-.ru
В конечном счёте пришёл к такому регулярному выражению для проверки корректности URL (если используются только латинские буквы):
^((https?|ftp)://)?([a-z0-9]+([-]*[a-z0-9]*)*[a-z0-9]+)(.[a-z0-9]+([-]*[a-z0-9]*)*[a-z0-9]+)*.([a-z]<2,6>)(/?)$
Из требований, предъявляемых к собственному обозначению доменных имён:
1) содержать не менее двух символов;
2) содержать не более 63 символов;
3) начинаться и заканчиваться буквой или цифрой;
4) не содержать символов, отличных от букв, цифр и дефиса (допустимыми буквами
являются буквы латинского алфавита; прописные и строчные буквы не
различаются);
5) не содержать одновременно дефисы в 3-й и 4-й позициях
реализована проверка корректности собственного обозначения доменного имени любого уровня для пунктов 1,3,4
и не реализована для пунктов 2 и 5.
Регулярное выражение проверки email
Дата публикации: 2016-08-08
От автора: приветствую вас друзья. В этой статье мы рассмотрим различные варианты регулярных выражений для валидации emai, а также составим собственное регулярное выражение проверки email. Приступим?
Валидация адреса email — это, пожалуй, одна из наиболее распространенных задач при работе с регулярными выражениями. Это и не удивительно, поскольку email в современном вебе используется сплошь и рядом. Без него практически не обходятся при регистрации пользователей. И вот здесь нам нужно проверить, а соответствует ли введенная пользователем в поле строка формату email.
Сразу отмечу, что наиболее точный ответ даст только вариант с обратной связью. Суть его заключается в том, что по введенному адресу отправляется письмо со ссылкой, по которой пользователь должен перейти для подтверждения регистрации. Соответственно, регистрация будет завершена только в том случае, если пользователь ввел реальный email.
Это единственный 100% способ проверки email. Все прочие нам дадут лишь проверку на соответствие формату, не более. Но поскольку у нас есть задача составить регулярное выражение — давайте его составим. Тем более что его вполне можно использовать на стороне клиента, тем самым улучшив юзабилити вашей формы регистрации.
Итак, начать стоит с того, что в сети вы можете встретить массу различных вариантов регулярок для проверки email. Как вам такой вариант?
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Страшно, не правда ли? Это шаблон для валидации email согласно стандарту. Я, конечно же, ни в коем разе не советую вам использовать такие шаблоны. Советую подыскать что-то попроще или составить шаблон самому. Собственно, пойду дальше — советую использовать максимально простой шаблон. Объясню почему.
Допустим вы составили или нашли правильный шаблон, который будет принимать только email, соответствующий формату. Например, я нашел вот такой:
Это первый попавшийся шаблон, который я нашел в сети. Как видим, этот шаблон работает достаточно криво, поскольку второй email был забракован. Хотя это вполне реальный email. А вот остальные, которые я придумал на ходу, были пропущены. Отсюда простой вывод: не заморачивайтесь с созданием универсальных шаблонов, поскольку пользователь вполне может придумать email. Используйте простейший шаблон, который будет проверять наличие знака @ в строке, а также наличие символов до и перед ней. К примеру, вот такая регулярка вполне сгодится:
Результат даже лучше предыдущего. Ну а на этом у меня сегодня все. Больше о регулярных выражениях вы можете узнать из нашего курса по регулярным выражениям. Удачи!
Хотите изучить регулярные выражения на PHP?
Посмотрите 12-ти часовой видео курс по регулярным выражениям на PHP!
Валидация E-mail адреса с помощью регулярных выражений
Очень таки часто появляется потребность получение email адреса от пользователя, так вот об этом мы и поговорим в данном уроке.
Хочу сказать, что в данном уроке я хочу продемонстрировать пример использования регулярных выражений на примере email.
Давайте рассмотрим как ведут себя обе стороны приложение и пользователь.
Действия пользователя:
1) Пользователь вводит свой e-mail в соответствующее поле ввода.
2) Пользователь нажимает на кнопку, после чего происходит действие отправки письма.
Действия приложения:
1) После нажатия пользователем кнопки, приложение проверяет на валидность email адрес;
1.1) в случае не валидного email адреса приложение выводит пользователю соответствующее сообщение;
1.2) в случае валидного email адреса приложение отправляет письмо.
Шаг 1.
Пишем регулярное выражение.
Регулярные выражения — формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов.
В данном регулярном выражении указанно, что строка может состоять с _A-Za-z0-9 допускаемых символов, после чего идет символ @ и опять допускаемые символы.
Шаг 2.
Создаем maven проект и класс EmailValidator.java со следующим содержимым:
теперь разберем все:
Pattern pattern – мы используем для построение шаблона, в нашем случае регулярного выражения.
Matcher matcher – используется для проверки регулярного выражения.
Pattern.compile(EMAIL_PATTERN) – компилируем регулярное выражение перед его использованием (это чувствительно сократит время).
matcher = pattern.matcher(hex) – задаем строку которую нужно проверить.
matcher.matches() – выполняем проверку соответствия строки с регулярным выражением.
Шаг 3.
Не зря мы создали Maven проект, так как мы будем тестировать наш валидатор с помощью JUnit и TestNG.
Давайте в pom.xml добавим зависимости:
Шаг 4.
Создадим класс EmailValidatorTest.java в нем напишем тесты которые будут проверять правильно ли работает наше регулярное выражение.
P.S. Спасибо за внимание, оставляем комментарии и подписуемся на обновления!
ПОХОЖИЕ ПУБЛИКАЦИИ
7 комментариев к статье «Валидация E-mail адреса с помощью регулярных выражений»
private static final String EMAIL_PATTERN =
“^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@” +
“[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]<2,>)$”;
public EmailValidator() <
pattern = Pattern.compile(EMAIL_PATTERN);
>
Зачем каждый раз при создании валидатора компилировать паттерн?
Гораздо лучше будет вынести сразу скомпилированный паттерн в static final
Хм. Спасибо. Что то не подумал даже. Да, согласен, так намного лучше.
Вопрос такой, подскажите, пожалуйста, как добавить независимость тестам dataProvider, то есть если один набор данных не правильный не падал весь тест.
Отличная неработающая регулярка.
кто-то просто не умеет ее правильно готовить, все работает
напишите пж выражение чтобы письма проходили только от гугла и яндекса
В примере Выше допущено множество ошибок!
———————————————————————————————–
String emailCheck=”^[a-zA-Z0-9]<1,>”+”((\.|\_|-<0,1>)[a-zA-Z0-9]<1,>)*”+”@”
+”[a-zA-Z0-9]<1,>”+”((\.|\_|-<0,1>)[a-zA-Z0-9]<1,>)*”+”\.[a-zA-Z]<2,>$”;
————————————————————————————————-
Вот работающий код.
И, сразу оговоримся, на разных почтовых сервисах разный алгоритм проверки и допустимые символы! Например на гугле нельзя нижнее подчеркивание использовать и т.п.
Что проверяет код: должна быть латиница, первым должен быть символ латиницы от а до z в любом регистре или цифра; далее может встречаться или “.” или “_” или “-“, но обязательно с последующим одним или более символом латиницы или цифрой(рами) и все это много раз(это исключает задвоение перечисленных символов типа “..”, “—“, “_____”); далее один символ @; далее хоть один символ латиницы или цифра(или множество оных); снова допустимые знаки без задвоения; и концовка: обязательная точка, и два и более символа латиницей.
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.