在Ruby中用于电子邮件的正则表达式?

14 浏览
0 Comments

在Ruby中用于电子邮件的正则表达式?

我需要验证电子邮件,我尝试了下面的表达式

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

但是,如果有人错误地输入类似xyx@domain.com@domain1.com的电子邮件,它也会被视为有效的电子邮件。请帮我找到在Ruby中正确的电子邮件正则表达式。

提前感谢。

0
0 Comments

在Ruby中,有时我们需要检查一个字符串是否是有效的电子邮件地址。为了实现这个功能,我们可以创建一个常量变量来存储我们的正则表达式,并使用它来验证字符串是否符合电子邮件地址的常见模式。

以下是一个可以验证字符串是否符合电子邮件地址模式的正则表达式代码:

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

通过观察这个表达式,我们可以看到它首先允许字母、数字、破折号和点号。然后我们确保@符号被使用。最后,我们要求字符串以a和字母的形式结束。通常电子邮件地址的格式是something.extension。最后,我们通过/i来确保匹配器的大小写不敏感。

为了构建一个验证电子邮件地址模式的方法,我们可以使用以下代码:

def is_valid_email? email
  email =~ VALID_EMAIL_REGEX
end

上述方法名为is_valid_email?,我们将一个名为email的参数传递给它。然后,我们将这个参数与VALID_EMAIL_REGEX常量进行匹配,返回truefalse。接下来,我们可以检查一些用例:

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

执行这段代码应该输出:

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

第一个和第三个电子邮件地址是有效的,因为它们与模式匹配,而第二个和第四个是无效的。

在三元运算符中不要忘记在参数周围加上括号。

0
0 Comments

正则表达式用于验证电子邮件地址的格式。在Ruby中,可以使用内置的URI::MailTo::EMAIL_REGEXP来进行电子邮件地址的验证。只需在模型中添加validates_format_of :user_email, with: URI::MailTo::EMAIL_REGEXP即可。

如果希望进一步完善正则表达式,可以使用其他的正则表达式作为替代。以下是一个建议:

suggestion = /^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$/
validates_format_of :user_email, with: suggestion

以上是关于在Ruby中使用正则表达式验证电子邮件地址的问题的原因和解决方法。

0
0 Comments

在Ruby中,可以使用mail gem来根据RFC2822解析任何字符串,例如:

def valid_email( value )
  begin
   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,还检查地址是否包含域名。mail gem已经包含在Rails中,因此您可以在应用程序的任何地方使用上述代码。

您是否知道任何用于相同目的的正则表达式呢?mail gem实际上根据RFC解析电子邮件,并且非常严格。如果您只需要进行一些基本的格式检查,可以使用Authlogic gem中使用的正则表达式,可以在https://github.com/binarylogic/authlogic/blob/master/lib/authlogic/regex.rb上找到。

0