我正在寻找一个正则表达式来验证电子邮件,以了解它是否有效。我有以下几点:
def is_a_valid_email?(email)
email_regex = %r{
^ # Start of string
[0-9a-z] # First character
[0-9a-z.+]+ # Middle characters
[0-9a-z] # Last character
@ # Separating @ character
[0-9a-z] # Domain name begin
[0-9a-z.-]+ # Domain name middle
[0-9a-z] # Domain name end
$ # End of string
}xi # Case insensitive
(email =~ email_regex)
end上面的问题是XXX_XXX@Xxx.com没有在它应该有效的时候返回。对于更好的正则表达式有什么想法或建议吗?
谢谢
发布于 2014-02-25 07:55:01
这些其他答案中的大多数都过于严格,或者允许使用明显错误的地址。因此,最好放弃过于严格,这会让用户感到沮丧,只做正确的主要事情。
1.最常见的用例:
validates :email, ..., format: { with: /\A[^@\s]+@([^@.\s]+\.)+[^@.\s]+\z/ }要同时允许root@localhost homer@blinky**,或,请使用以下命令:**
validates :email, ..., format: { with: /\A[^@\s]+@([^@.\s]+\.)*[^@.\s]+\z/ }以上都不能代替查找验证码、dns记录、DNS域黑名单、IP黑名单和确认电子邮件。
对于真实的电子邮件域验证,可以使用以下代码:https://gist.github.com/9200104
这匹马现在被打得精疲力竭,正被打成谷仓。
https://stackoverflow.com/questions/4770133
复制相似问题