Ruby on rails 为电子邮件验证设计正则表达式的更新

Ruby on rails 为电子邮件验证设计正则表达式的更新,ruby-on-rails,regex,Ruby On Rails,Regex,我目前正在使用设计正则表达式: /\A[^@\s]+@[^@\s]+\z/ 这是简单和排序。但是,它不会像example@example..com 另一种选择是URI::MailTo::EMAIL\u REGEXP: /\A[A-zA-Z0-9.!\\$%&'*+\/=?^ `{124}-]+[A-zA-Z0-9](?:[A-zA-Z0-9-]{0,61}[A-zA-Z0-9])?(?:\[A-zA-Z0-9](?:[A-zA-Z0-9-]{0,61}[A-zA-Z0-9]) 它将过滤有效域,如

我目前正在使用设计正则表达式

/\A[^@\s]+@[^@\s]+\z/

这是简单和排序。但是,它不会像
example@example..com

另一种选择是URI::MailTo::EMAIL\u REGEXP

/\A[A-zA-Z0-9.!\\$%&'*+\/=?^ `{124}-]+[A-zA-Z0-9](?:[A-zA-Z0-9-]{0,61}[A-zA-Z0-9])?(?:\[A-zA-Z0-9](?:[A-zA-Z0-9-]{0,61}[A-zA-Z0-9])

它将过滤有效域,如
hans@über.com


我不擅长正则表达式,但是否有更好的方法,或者如何使用Desive在第一个正则表达式中添加双点验证。您可以根据需要重构正则表达式

/\A[^@\s]+@[^@.\s]+(?:\.[^@.\s]+)*\z/ # If you want to allow name@domain
/\A[^@\s]+@[^@.\s]+(?:\.[^@.\s]+)+\z/ # If you want to require at least one dot after @
这里,

  • \A
    -字符串的开头
  • [^@\s]+
    -一个与除
    @
    和空格以外的一个或多个字符相匹配的否定字符类
  • @
    -一个
    @
    字符
  • [^@.\s]+
    -1个或多个字符,而不是
    @
    和空格
  • (?:\.[^@.\s]+)*
    -0次或更多次出现(如果在末尾使用了
    +
    ,则出现1次或更多)
    • \。
      -一个点
    • [^@.\s]+
      -1个或多个字符,而不是
      @
      和空格
  • \z
    -字符串结尾

请参阅并使用
/\A[^@\s]+@[^@.\s]+(?:\.[^@.\s]+)+\z/
/\A[^@\s]+(?:\.[^@.\s]+)*\z/
谢谢您的帮助。你能解释一下正则表达式吗?区别是什么?一个点就不同了
[^@.\s]+(?:\..^@.\s]+)+//code>匹配除
、空格和
之外的任何1+字符,然后匹配任何一个或多个点,然后再匹配除
@
、空格和
之外的任何1+字符。您能帮我再做一个更改吗?我怎么能不匹配这样的电子邮件:me.@domain.com或。me@domain.com. 我试图添加+[\A.]之类的条件,但我需要它的负数。@codemonkey同样的逻辑,
\A[^@.\s]+(?:\.[^@.\s]+)*@[^@.\s]+(?:\.[^@.\s]+)+\z