Регулярное выражение для электронной почты в Ruby? - PullRequest
1 голос
/ 16 февраля 2012

Мне нужно подтвердить адрес электронной почты. Я попробовал следующее выражение

(/ \ b [A-Z0-9 ._% az -] + @ (?: [A-Z0-9a-z-] +.) + [A-Za-z] {2,4} \ z /)

Но если кто-то по ошибке отправит письмо, например xyx @ domain.com @ domain1.com, то это тожеправильный электронный адрес.Пожалуйста, помогите мне получить точное регулярное выражение для электронной почты в рубине.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 16 февраля 2012

Вы можете использовать гем mail для анализа любой строки в соответствии с RFC2822 следующим образом:

def valid_email( value )
  begin
   value return false if value == ''
   parsed = Mail::Address.new( value )
   return parsed.address == value && parsed.local != parsed.address
  rescue Mail::Field::ParseError
    return false
  end
end

Это проверяет, предоставлено ли электронное письмо, т.е. возвращает false для пустого адреса, а также проверяет, что адрес содержит домен.

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

0 голосов
/ 26 февраля 2019

Итак, вы хотите проверить, является ли конкретная строка действительным адресом электронной почты или нет в Ruby.

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

ТамЭто бесчисленные ресурсы с помощью шпаргалок Regex, которые вы можете включить для сопоставителей.

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

VALID_EMAIL_REGEX = /\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i

Если вы посмотрите на это выражение, первая часть позволяет использовать имена, цифры, тире и точки.Затем следует убедиться, что используется символ @.И, наконец, за этим следуют a и буквы.Обычно это в формате something@domain.extension.В конце мы гарантируем, что сопоставитель нечувствителен к регистру с помощью /i.

Для создания метода, который проверяет этот шаблон

def is_valid_email? email
  email =~ VALID_EMAIL_REGEX
end

Вышеуказанный метод называется is_valid_email?, и мыпередаем ему аргумент, называемый email.

Далее, мы проверяем этот параметр по константе VALID_EMAIL_REGEX для возврата true из false.Затем вы можете проверить некоторые варианты использования:

p is_valid_email?("jon@kinney.com") ? "Valid" : "Invalid"
p is_valid_email?("jonkinney.com") ? "Valid" : "Invalid"
p is_valid_email?("jon.k@kinney.com") ? "Valid" : "Invalid"
p is_valid_email?("jon@kinney") ? "Valid" : "Invalid"

Выполнение этого кода должно вывести:

"Valid"
"Invalid"
"Valid"
"Invalid"

Первый и третий адреса электронной почты действительны, поскольку они соответствуют шаблону, а второй ичетвертый недействителен.

Не забудьте заключить аргументы вашего троичного оператора в круглые скобки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...