shanmugarajaa Ответов: 1

Проблема проверки выражений электронной почты


Привет Друзья,

У меня есть два выражения для проверки идентификатора электронной почты
#1 " ^[a-zA-Z0-9_\\+-]+(\\.[а-за-З0-9_\\+-]+)*@[а-за-З0-9-]
+(\\. [a-zA-Z0-9-]+)*\\.([a-zA-Z]{2,4})$"

#2 " регулярное выражение.Выполняется(файл ViewModel.Электронной почты, @"^[\ш-\.]+@(элемент[\W-]+\.)+элемент [\W-]{2,4}$)"


Проблема заключается в том, что выражение проверки #1 всегда успешно. Но выражение проверки #2 в некоторых случаях терпит неудачу.

1. почему выражение №2 является неудачным
2. какое выражение (#1 и #2) Лучше всего использовать

Пожалуйста, помогите в этом вопросе.

Спасибо,
Шанмуга Раджа

Что я уже пробовал:

Я не знаю, почему " регулярное выражение.Выполняется(файл ViewModel.Электронной почты, @"^[\ш-\.]+@(элемент[\W-]+\.)+элемент [\W-]{2,4}$)" становится плохо.

1 Ответов

Рейтинг:
1

OriginalGriff

Я не знаю, почему " регулярное выражение.Выполняется(файл ViewModel.Электронной почты, @"^[\ш-\.]+@(элемент[\W-]+\.)+элемент [\W-]{2,4}$)" становится плохо.

Несоответствие скобок.
Выражение, которое вы передаете в регулярное выражение, содержит ложное") " в конце, которое вычислитель выражений не понимает.

Но...Я бы не стал использовать для этого регулярное выражение: Вы можете получить длинные TLD, которые не помещаются в три из четырех символов: например,". museum", поэтому ограничивать TLD 2 или 4 символами-плохая идея. Кроме того, домен может содержать '.' в качестве любой части имени: "mobile.mydomain.com" или часть "кода страны": "mydomain.co.uk-значит, вы должны это учитывать.

Корпорация Майкрософт рекомендует использовать Класс Mailaddress (Системы.Нет.Почта)[^] конструктор для проверки допустимых имен: Как это сделать: Убедитесь, что строки находятся в допустимом формате электронной почты[^]- см. раздел Примечания.