Java проверка e mail адреса

Validate email address in java

In this post, we will see how to validate email address in java.

There are times when you have to validate email address provided by user. You might want to write your own logic to validate email addresses but there are lots of standard regular expressions or libraries which can help you validate email address and provide great results.

Email address is made up of local part, @ and followed by domains. You can go through wiki page for format of email address.

Using regular expressions

We can use regular expression provided by OWASP Validation Regex Repository which is considered to be safe and will solve the purpose in most of the cases.

Here is the regular expression

Here is complete java program for email address validation in java

When you run above program, you will get below output

Using apache common validator library

You can also use inbuilt apache librabry to validate the address. If you are using maven, then you need to add below dependency in your pom.xml.

Here is java program for the same.

When you run above program, you will get below output

That’s all about validate email address in java.

Was this post helpful?

Share this

Author

Input validation in java using Scanner

Table of ContentsScanner Methods to Validate User InputScanner Methods to get User InputInput validation using Scanner classValidate integer input using Scanner in JavaValidate Floating point input using Scanner in JavaValidate Boolean input using Scanner in JavaValidate String input using Scanner in Java In this post, we will see how to do input validation in java […]

Validate password in java

Table of ContentsUsing regexUsing String’s matches method In this post, we will see how to validate a password in java. Here are rules for password: Must have at least one numeric character Must have at least one lowercase character Must have at least one uppercase character Must have at least one special symbol among @#$% […]

Java regex for currency symbols

In this post, we will see about regex to find currency symbols in a text. You can use below regex to find currency symbols in any text. \\p Each unicharacter belongs to certain category and you can search for it using /p. Sc is short code for current symbol, so using \p, we are trying […]

Java credit card validation – Luhn Algorithm in java

Table of ContentsIntroductionDetailed implementationUsing Apache common validation In this post, we will see about Luhn Algorithm in java Introduction Luhn algorithm, also known as modulus 10 or mod 10 algorithm, is a simple checksum process for validating various identification numbers such as credit card numbers, Canadian social securities numbers. This algorithm is designed to protect […]

Java isNull method

In this post, we will about Objects class’s isNull method. Objects’s isNull() method is used to check if object is null or not. java.util.Objects class was introduced in java 7. Here is simple example for Object’s isNull method. [crayon-64b8b9c778830481707405/] Output: Is str1 null: false Is str2 null: true Let’s look at source code Object’s isNull() […]

Validate phone number in java

Table of ContentsValidate any international phone number as per E.123RegexExplanationValidate Indian mobile numberRegexExplanation In this post, we will see how to validate phone number in java. Validate any international phone number as per E.123 E.123 is a standards-based recommendation by the International Telecommunications Union sector ITU-T. E.123 provides following specifications. The leading plus (+) serves […]

Источник

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

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

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

public class RegularExpression < public static void main(String [] args) < Pattern pattern = Pattern.compile(“”); Matcher matcher = pattern.matcher(“”); boolean matches = matcher.matches(); >> 
  1. Состоять из двух частей, разделённых символом “@”.
  2. Левая часть должна состоять из английских букв или цифр, может содержать точки и тире, притом после точки или тире обязательно должна следовать как минимум одна буква.
  3. Правая часть должна содержать хотя бы одну точку в конце, после которой должны следовать от двух до четырёх букв.
  4. Начинаться обе части должны с буквенных символов.
Pattern pattern = Pattern.compile(“[A-Za-z0-9]”); 

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

Pattern pattern = Pattern.compile(“[A-Za-z0-9])[\\-]”); 

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

Pattern pattern = Pattern.compile(“[A-Za-z0-9][\\-][A-Za-z0-9]”); 

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

Pattern pattern = Pattern.compile(“[A-Za-z0-9][\\-][A-Za-z0-9][\\.][A-Za-z0-9]”); 
Pattern pattern = Pattern.compile(“([A-Za-z0-9][\\-][A-Za-z0-9][\\.][A-Za-z0-9])+”); 

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

Pattern pattern = Pattern.compile(“([A-Za-z0-9][\\-][A-Za-z0-9][\\.][A-Za-z0-9])+@”); 

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

Pattern pattern = Pattern.compile(“([A-Za-z0-9][\\-][A-Za-z0-9][\\.][A-Za-z0-9])+@([A-Za-z0-9][\\-][A-Za-z0-9][\\.][A-Za-z0-9])+[\\.]); 
Pattern pattern = Pattern.compile(“([A-Za-z0-9][\\-][A-Za-z0-9][\\.][A-Za-z0-9])+@([A-Za-z0-9][\\-][A-Za-z0-9][\\.][A-Za-z0-9])+[\\.][a-z]”); 

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

Pattern pattern = Pattern.compile(“([A-Za-z0-9][\\.-][A-Za-z0-9])+@([A-Za-z0-9][\\.-][A-Za-z0-9])+[\\.][a-z]”); 

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

Pattern pattern = Pattern.compile(“(\\w[\\.-]\\w)+@(\\w[\\.-]\\w)+[\\.][a-z]”); 

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

Pattern pattern = Pattern.compile(“(\\w+[\\.-]\\w+)+@(\\w+[\\.-]\\w+)+[\\.][a-z]”); 
Pattern pattern = Pattern.compile(“(\\w+[\\.-]?\\w+)+@(\\w+[\\.-]?\\w+)+[\\.][a-z]”); 

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

Pattern pattern = Pattern.compile(“\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*\\.\\w”); 

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

public class RegularExpression < public static void main(String [] args) < Pattern pattern = Pattern.compile(“\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*\\.\\w”); Matcher matcher = pattern.matcher(“”); boolean matches = matcher.matches(); > > 

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

Источник

Читайте также:  Configure error cannot find php config please use with php config path
Оцените статью