Regex Ruby中电子邮件的正则表达式?
我需要验证电子邮件我尝试了以下表达式 (/\b[A-Z0-9.%A-z-]+@(?[A-Z0-9a-z-]+)+[A-Za-z]{2,4}\z/) 但是如果有人发电子邮件,比如xyx@domain.com@domain1.com错误地认为这也是一封有效的电子邮件。请帮助我获得ruby中电子邮件的精确正则表达式 提前感谢。您可以使用gem根据RFC2822解析任何字符串,如下所示:Regex Ruby中电子邮件的正则表达式?,regex,ruby-on-rails-3,Regex,Ruby On Rails 3,我需要验证电子邮件我尝试了以下表达式 (/\b[A-Z0-9.%A-z-]+@(?[A-Z0-9a-z-]+)+[A-Za-z]{2,4}\z/) 但是如果有人发电子邮件,比如xyx@domain.com@domain1.com错误地认为这也是一封有效的电子邮件。请帮助我获得ruby中电子邮件的精确正则表达式 提前感谢。您可以使用gem根据RFC2822解析任何字符串,如下所示: def valid_email( value ) begin value return false if
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
,并检查该地址是否包含域
邮件gem已经包含在Rails中,因此您可以在应用程序中的任何位置使用上面的代码。因此您需要检查特定字符串是否是Ruby中的有效电子邮件地址 首先要创建一个存储正则表达式的常量变量 有无数关于Regex备忘单的资源,您可以为匹配者合并这些资源 下面是正则表达式代码,它将验证字符串是否与后跟电子邮件地址的公共模式匹配
VALID\u EMAIL\u REGEX=/\A([\w+\-]。?)+@[A-z\d\-]+(\.[A-z]+)*\.[A-z]+\z/i
如果你看这个表达式,第一部分允许名称、数字、破折号和点。然后确保使用了@
符号。最后,后面是aa
和字母。这通常采用something@domain.extension
。最后,我们将确保matcher对/i
不区分大小写
构建验证此模式的方法
def is_valid_email? email
email =~ VALID_EMAIL_REGEX
end
上述方法称为是否有效\u电子邮件?
,我们将向其传递一个名为电子邮件
的参数
接下来,我们将根据VALID\u EMAIL\u REGEX
常量检查此参数,以返回false
的true
。然后,您可以检查一些用例:
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"
第一个和第三个电子邮件地址有效,因为它们与模式匹配,而第二个和第四个电子邮件地址无效
不要忘记将三元运算符中的参数括在括号中。您可以使用内置的ruby电子邮件regexp
URI::MailTo::email\u regexp
只需添加
使用模型中的:URI::MailTo::email\u REGEXP验证:user\u电子邮件的格式
另外,您可以使用不同的regexp来增强regexp,请参见@Daniel suggestion。这是一个额外的字段,我们需要手动验证。可能重复的@prasvin Rails不会进行电子邮件验证?如果是的话,请发布一个文档链接。你知道任何用于相同目的的正则表达式吗?mail gem实际上根据RFC解析电子邮件,并且非常严格。如果您只需要执行一些基本的格式检查,那么可以使用authlogicgem中使用的正则表达式