Освоение проверки электронной почты в Dart с помощью регулярных выражений

Введение

Проверка электронной почты — обычная задача во многих приложениях, и Dart предоставляет мощные инструменты для эффективного решения этой задачи. В этой статье мы рассмотрим несколько методов проверки адресов электронной почты с использованием регулярных выражений в Dart. Мы обсудим различные шаблоны регулярных выражений, предоставим примеры кода и объясним их использование. Давайте погрузимся!

Метод 1: простой шаблон электронного письма

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

bool validateEmail(String email) {
  final pattern = r'^[\w-]+(\.[\w-]+)*@([a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.)+[a-zA-Z]{2,}$';
  final regex = RegExp(pattern);
  return regex.hasMatch(email);
}

Объяснение:

  • ^и $обозначают начало и конец строки соответственно.
  • [\w-]+соответствует одному или нескольким словесным символам или дефисам.
  • (\.[\w-]+)*соответствует нулю или более вхождению точки, за которой следуют слова или дефисы.
  • @соответствует символу “@”.
  • ([a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.)+соответствует имени домена.
  • [a-zA-Z]{2,}соответствует домену верхнего уровня (например,.com,.org,.io).

Метод 2: свободная проверка

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

bool validateEmailLoose(String email) {
  final pattern = r'^.+@.+\..+$';
  final regex = RegExp(pattern);
  return regex.hasMatch(email);
}

Объяснение:

  • ^и $обозначают начало и конец строки соответственно.
  • .+соответствует одному или нескольким любым символам (кроме новой строки).
  • @соответствует символу “@”.
  • .+соответствует одному или нескольким любым символам.
  • \.соответствует символу точки.
  • .+соответствует одному или нескольким любым символам.

Метод 3: проверка электронной почты с помощью списка TLD

В некоторых случаях вам может потребоваться проверить адреса электронной почты, убедившись, что домен верхнего уровня (TLD) действителен. Этого можно добиться, используя список TLD и следующий код:

bool validateEmailWithTLDList(String email) {
  final pattern = r'^[\w-]+(\.[\w-]+)*@([a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.)+('
      r'com|net|org|edu|gov|int|mil|arpa|biz|aero|coop|info|name|pro|'
      r'museum|travel|n[a-z]{2})$';
  final regex = RegExp(pattern);
  return regex.hasMatch(email);
}

Объяснение:

  • Шаблон тот же, что и в методе 1, с дополнительной группой (com|net|org|edu|gov|int|mil|arpa|biz|aero|coop|info|name|pro|museum|travel|n[a-z]{2}), соответствующей действительным TLD.

Метод 4: использование пакета EmailValidator

Если вы предпочитаете подход более высокого уровня, вы можете использовать пакет email_validator, который обеспечивает удобный способ проверки адресов электронной почты в Dart. Чтобы использовать этот пакет, добавьте его в свой файл pubspec.yaml:

dependencies:
  email_validator: ^3.0.0

Затем вы можете использовать пакет следующим образом:

import 'package:email_validator/email_validator.dart';
bool validateEmailWithPackage(String email) {
  return EmailValidator.validate(email);
}

Заключение

В этой статье мы рассмотрели несколько методов проверки адресов электронной почты с помощью регулярных выражений в Dart. Мы начали с простых шаблонов регулярных выражений и постепенно вводили более сложные методы. Кроме того, мы рассмотрели использование пакета email_validatorв качестве альтернативы более высокого уровня. С помощью этих методов вы можете уверенно проверять адреса электронной почты в своих приложениях Dart. Приятного кодирования!