2016-09-23 5 views
0

Мы используем regex для проверки электронной почты. Но похоже, что он не подходит для [email protected] этот идентификатор электронной почты. Может кто-нибудь, пожалуйста, сообщите, что не так в данном регулярном выражении?Regex для проверки идентификаторов электронной почты не работает?

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

string sPattern = "^\\w+[\\w\\-\\.]*\\w+\\@\\w+([\\w\\-]*\\w+\\.\\w+){1,4}$"; 

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

Ex: [email protected] или [email protected]

+2

Что не так в данном регулярном выражении? Пожалуйста, советую, Есть так много примеров, но по какой-то причине я хочу использовать это только. –

+1

попробуйте это [regex] (https://dotnetfiddle.net/ICqSuI) –

+0

Вы можете использовать онлайн-повторитель ... –

ответ

1
\w+([\\w\\-]*\\w+ 

В этой части, вы хотите, между @ и .

  • по меньшей мере один буквенно-цифровой знак =>w+
  • 0 или более алфавитно-цифровой символ или - =>[\\w\\-] *
  • по крайней мере один алфавитно-цифровой символ =>w+

Так, как у вас есть только один символ q, чек с треском проваливается.

Вы должны искать существующие шаблоны проверки электронной почты, это довольно сложно!

0
bool isEmail = Regex.IsMatch(emailString, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase); 
+1

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http: // meta .stackexchange.com/questions/114762/explaining-whole-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. –

0

Вы должны найти существующие регулярные выражения для проверки подлинности электронной почты. Но то, что я могу сказать из вашего регулярного выражения, состоит в том, что у вас много ненужных «\ w». Удаление их:

^[\w\-\.]+\@([\w\-]+\.\w+){1,4}$ 

Будет иметь рабочее регулярное выражение. Хотя не очень точный для проверки подлинности электронной почты