Проверка электронной почты Regex - PullRequest
191 голосов
/ 17 марта 2011

Я использую это

@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"

regexp для проверки электронной почты

([\w\.\-]+) - это для домена первого уровня (много букв и цифр, также точки и дефисы)

([\w\-]+) - это для домена второго уровня

((\.(\w){2,3})+) - и для доменов других уровней (от 3 до бесконечности), которые включают точку и 2 или 3 литерала

что не так с этим регулярным выражением?

РЕДАКТИРОВАТЬ: оно не совпадает с "Some@someth.ing" электронной почты

Ответы [ 30 ]

0 голосов
/ 02 июля 2013

В Visual Studio это было годами.

\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

Надеюсь, это поможет!

0 голосов
/ 27 апреля 2018

Идеального регулярного выражения не существует, но оно довольно сильное, я думаю, на основании изучения RFC5322 . И с интерполяцией строк C #, я думаю, довольно легко следовать.

const string atext = @"a-zA-Z\d!#\$%&'\*\+-/=\?\^_`\{\|\}~";
var localPart = $"[{atext}]+(\\.[{atext}]+)*";
var domain = $"[{atext}]+(\\.[{atext}]+)*";
Assert.That(() => EmailRegex = new Regex($"^{localPart}@{domain}$", Compiled), 
Throws.Nothing);

проверено с NUnit 2.x.

0 голосов
/ 07 февраля 2018

Я использую Regex.IsMatch ().

Прежде всего вам необходимо добавить следующую инструкцию:

using System.Text.RegularExpressions;

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

private bool EmailValidation(string pEmail)
{
                 return Regex.IsMatch(pEmail,
                 @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
                 @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$",
                 RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250));
}

Это приватный метод из-за моей логики, но вы можете поместить метод как статический в другой слой, такой как "Утилиты", и вызывать его там, где вам нужно.

0 голосов
/ 14 марта 2014

Попробуйте следующий код:

using System.Text.RegularExpressions;
if  (!Regex.IsMatch(txtEmail.Text, @"^[a-z,A-Z]{1,10}((-|.)\w+)*@\w+.\w{3}$"))
        MessageBox.Show("Not valid email.");
0 голосов
/ 30 июня 2017

Regex Email Pattern:

^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$
0 голосов
/ 14 июня 2017

Я думаю, что ваша каретка и знак доллара являются частью проблемы. Вы также должны немного изменить регулярное выражение, я использую следующее @ "[:] + ([\ w .-] +) @ ([\ w-.]) + ((. (\ ш) {2,3}) +) "

0 голосов
/ 14 июля 2015

ПОИСК СТРОК С ИСПОЛЬЗОВАНИЕМ МЕТОДА REGEX В C #

Как проверить электронную почту по регулярному выражению?

string EmailPattern = @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
if (Regex.IsMatch(Email, EmailPattern, RegexOptions.IgnoreCase))
{
    Console.WriteLine("Email: {0} is valid.", Email);
}
else
{
    Console.WriteLine("Email: {0} is not valid.", Email);
}

Использовать ссылку String.Regex ()Метод

0 голосов
/ 27 июля 2016

Сочетание вышеуказанных ответов. Я хотел бы использовать предпочтительный подход Microsoft с использованием MailAddress, но реализовать его как расширение строки:

public static bool IsValidEmailAddress(this string emailaddress)
    {
        try
        {
            MailAddress m = new MailAddress(emailaddress);
            return true;
        }
        catch (FormatException)
        {
            return false;
        }
    }

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

string customerEmailAddress = "bert@potato.com";
customerEmailAddress.IsValidEmailAddress()

Чистый, простой и портативный. Надеюсь, это кому-нибудь поможет. Регулярные выражения для электронных писем грязные.

Тем не менее, у MattSwanson есть блог на эту тему, и он настоятельно рекомендует НЕ использовать регулярные выражения, а вместо этого просто проверять '@' и, возможно, точку. Прочитайте его объяснение здесь: https://mdswanson.com/blog/2013/10/14/how-not-to-validate-email-addresses.html

0 голосов
/ 15 июня 2016

1

^[\w!#$%&'*+\-/=?\^_`{|}~]+(\.[\w!#$%&'*+\-/=?\^_`{|}~]+)*@((([\-\w]+\.)+[a-zA-Z]{2,4})|(([0-9]{1,3}\.){3}[0-9]{1,3}))$

2

^(([^<>()[\]\\.,;:\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,}))$
0 голосов
/ 15 июля 2015

Этот код поможет проверить идентификатор электронной почты с помощью выражения регулярного выражения в c # .Net..Это легко использовать

if (!System.Text.RegularExpressions.Regex.IsMatch("<Email String Here>", @"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"))
        {
            MessageBox.show("Incorrect Email Id.");
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...