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