регулярные выражения javascript проверка email

Проверка адреса email и номера телефона на javascript

Предоставляя пользователю возможность заполнения полей на сайте, следует проверять введенные данные на валидность. Это позволит предупредить пользователя о случайных ошибках, а так же даст дополнительную защиту от спама. Ярким примером является форма обратной связи, обязательными полями которой часто бывают email и телефон. Займемся их проверкой на правильность заполнения с помощью javascript.

Информация лучше воспринимается на примерах, поэтому посмотрим готовую форму в действии:

Пожалуйста, заполните все поля формы!

Для начала разберем применяемые регулярные выражения, а полный код формы и javascript функций я приведу в конце статьи.

Валидность адреса электронной почты

Составим регулярное выражение для наших требований:

Разберём правило по частям:

Разобранный пример немного упрощен для лучшего восприятия. У него есть недостаток — первым знаком в email не может быть тире или точка, но приведенное регулярное выражение этого не учитывает. Чтобы это исправить следует его немного поправить:

Проверка валидности номера телефона в javascript

С номером телефона ситуация сложнее, так как номер можно ввести десятками способов:

Есть несколько выходов из ситуации:

Для форм обратной связи последний вариант кажется наилучшим. Во-первых, если человек не хочет указывать свой номер телефона, то никакие проверки на корректность не помогут. Он просто введет несуществующий или чужой номер. Во-вторых, посетители сайта не любят когда их загоняют в определенные рамки. Поэтому рекомендую использовать регулярное выражение следующего типа:

Для любителей жестких шаблонов приведу пример проверки номера вида 8 (999) 123-45-64

Исходный код примера: html и javascript

Это полный код тестовой странички, на которой я использовал форму и js скрипты для отладки правил из этой статьи. Можете скопировать его и протестировать у себя на компьютере.

Это демонстрационная версия. В случае с формой обратной связи нам следует проводить проверку полей не при нажатии на кнопку, а при попытке отправить её:

Источник

Веб-заметки и Веб-подсказки

Регулярные выражения для проверки 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);
>

32 комментария на «Регулярные выражения для проверки e-mail, URL и номера телефона»

Спасибо автору!
Хоть кто-то догадался всё в одну кучу собрать, чтоб не искат по сто раз.
В закладки! :-)

Говорят, домены могут быть до 6 символов ( <2,4>вместо <2,6>)

ОЧЕНЬ ПОЛЕЗНЫЙ МАТЕРИАЛ ОЧЕНЬ МНЕ ПОМОГ

А у вас самих на сайте какой 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,>(\/.+)$
(лишние «карманы» почистил)

не лучше ли (\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.

Источник

JavaScript Regular Expression Email Validation [duplicate]

RbMlQ

17 Answers 17

If you define your regular expression as a string then all backslashes need to be escaped, so instead of ‘\w’ you should have ‘\\w’.

Alternatively, define it as a regular expression:

BTW, please don’t validate email addresses on the client-side. Your regular expression is way too simple to pass for a solid implementation anyway.

See the real thing here: http://www.ex-parrot.com/

ip8nA

this is the one i am using on my page.

35ocq

I’ve been using this function for a while. it returns a boolean value.

You may be interested in this question (or this one), which highlights the fact that identifying valid email addresses via regexps is a very hard problem to solve (if at all solvable)

EFK74

yTqea

Sometimes most of the registration and login page need to validate email. In this example you will learn simple email validation. First take a text input in html and a button input like this

you can also check using this regular expression

Check this demo output which you can check here

hope it will help you

You may be interested in having a look at this page it list regular expressions for validating email address that cover more general cases.

Источник

Регулярные выражениия в Java на примере адреса электронной почты

891c0ce03a9840078d59ee11f08b6658

Известно, что регулярные выражения – это, по сути, шаблоны из символов, которые задают определённое правило поиска. И, среди прочего, с их помощью возможно осуществить проверку определённой строки или строк на соответствие некоему заранее заданному паттерну или стандарту.
Одним из наглядных и довольно простых примеров использования регулярных выражений в Java и не только является проверка проверка данных пользователя, ввёдённых при регистрации на определённом сайте на корректность. В первую очередь это касается адреса электронной почты, так как к нему всегда предъявляются определённые орфографические требования.

Таким образом, предлагаю разобрать частный случай применения регулярных выражений на примере простого Java-приложения, которое могло бы обрабатывать введённый пользователем адрес электронной почты.
Итак, в Java все классы, описывающие регулярные выражения, хранятся в пакете java.util.regex. Нам понадобятся два класса – Pattern и Matcher
Первый класс, как видно из его названия, описывает паттерн или шаблон, которому должены соответствовать введённые нами данные (в нашем случае – адрес электронной почты), второй – собственно сами данные.

Символы в квадратных скобках указывают интервал возможных буквенных значений.
В фигурных скобках мы описываем допустимое количество символов, указанных ранее. Слева от запятой указано минимальное значение (единица), справа – максимальное. Отсутствие значения, как в нашем случае, говорит о том, что количество символов не имеет максимального значения. Паттерн также может содержать и строго фиксированное число символов или не содежать его вовсе. В последнем случае символ может быть использован лишь один раз.
Далее в нашем паттерне может быть знак тире. “Может быть” означает, что символ будет присутствовать в паттерне либо один раз, либо ни разу, следовательно:

В случае присутствия тире, как мы уже оговорили, после него в обязательном порядке должна следовать хотя бы одна буква, т.е. начальный паттерн повторяется. Символ тире обозначается как [\\-]:

Помимо этого, в строке также может присутствовать точка ([\\.]), после которой, опять-таки, обязан следовать буквенный символ:

Так как описанный паттерн левой части должен повторяться, мы обозначим это в следующем виде:

Знак плюса после общей скобки означает, что паттерн может повторяться от одного раза до неопределённого количества раз.
Так как левую часть от правой отделяет собачка, мы указываем, что после левой части в обязательном порядке будет присутствовать этот символ:

Правая часть паттерна должна содержать в себе уже упомянутый набор букв в количестве от одного до бесконечности с обязательным наличием точки в конце. Как и в предыдущем случае, паттерн до точки может повторяться:

В конце паттерна должны вновь следовать символы, причём в количестве от двух до четырёх:

Вот, собственно, и весь паттерн. Не маленький, не находите? К счастью, есть способ несколько сократить этот набор, сделав его более читабельным и лёгким для восприятия.
Для начала, существует способ одновременного выражения наличия тире или точки в паттерне. Вместо того, чтобы отдельно пропсывать все точки ([\\.]) и тире ([\\-]), их можно выразить единым символом — [\\.-]. Используя его, мы можем сократить паттерн до следующего:

Также, существует символ, который может означать любую букву или цифру — \\w. Т.е. он способен заменить описание типа [A-Za-z0-9]:

Так как знак плюса означает наличие символа в количестве от одного до бесконечности, описанное выше можно также свести до:

Кроме того, наличие символа не более одного раза можно обозначить символом ?:

Есть также символ, означающий наличие чего-либо в паттерне неопределённое количество раз, т.е. <0,>. Обозначается он как *. В итоговом варианте мы имеем следующее:

Подобный паттерн намного компактнее, чем то, к чему мы пришли ранее. Всё, что нам теперь остаётся – это реализовать формальную часть приложения, используя наш готовый паттерн и булевую переменную:

Как именно использовать данную булевую переменную – это уже дело вкуса или возможностей. Ключевые же моменты уже готовы и дальнейшая доработка остаётся целиком за Вами.
Надеюсь, данное изожение было достаточно доступным. И конечно же, дерзайте.

Источник

Как проверить e-mail в JavaScript, не используя PHP?

Как проверить e-mail в JavaScript без PHP, то есть «чекнуть» валидность на стороне клиента? Для этого воспользуемся популярной библиотекой jQuery.

Нередко при регистрации нужно проверить правильность электронного адреса. Зачем? Чтобы пользователь не мог ввести несуществующий e-mail. Это быстрая проверка на стороне клиента, которая совершенно не заставит ждать. Если же ввод неправильный, пользователь получит сообщение об ошибке и возможность исправить введенный адрес.

Чтобы проверить e-mail в JavaScript, мы используем jQuery.

Регулярные выражения

В сети регулярок полно, но нужно понимать, каким именно следует воспользоваться. Вот часть кода:

Наше регулярное выражение выглядит следующим образом:

А вод полный программный код, который отвечает на поставленный вопрос:

Вот только вы должны помнить, что проверку следует также реализовать и на стороне сервера.

Вообще, полная проверка электронного адреса должна производиться именно на стороне сервера по факту отправки формы. Но основная идея состоит в том, чтобы как минимум корректность написания e-mail «прощупать» еще на стороне клиента и выдать предупреждающее сообщение, если введенное формату не соответствует.

Давайте рассмотрим проверку соответствия введенного текста формату e-mail адреса более подробно.

HTML-форма

Это будет несложная страничка с подключенной библиотекой jQuery. Обратите внимание, что в «голове» между тегами остается место для написания кода:

Событие с подвязанной проверкой поля

Данное событие вызывается в тот момент, когда элемент теряет фокус. На этом и будет основываться процесс проверки: пользователь задействует поле e-mail, введет в него электронный адрес и убирает курсор мышки. В этот момент теряется фокус элемента (поля для ввода e-mail) и происходит проверка:

Проверка на заполненность поля

Это первое, что делается перед тем, как проверить e-mail в JavaScript. Если поле оказывается пустым, мы «выбрасываем» предупреждение:

Валидация

Вас также могут заинтересовать другие статьи по теме:

Источник

Понравилась статья? Поделить с друзьями: