Answers:
此正则表达式模式将匹配一个空字符串:
^$
这将匹配(粗略地)电子邮件或空字符串:
(^$|^.*@.*\..*$)
^
,在这种情况下,实际上是在字符串中间寻找电子邮件或什么也不找。为此(email_regex)?
,更适合。
^$
它不起作用,但起作用^(?!.)
:[[ ^
字符串开头,(?!)
负向超前,.
任何字符-不包括换行]
匹配空字符串或电子邮件
(^$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
匹配空字符串或电子邮件,但也匹配任意数量的空格
(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
详细了解与正则表达式匹配的电子邮件:
不要将电子邮件与正则表达式匹配。它非常丑陋,漫长而复杂,您的正则表达式解析器可能仍然无法处理它。尝试找到匹配它们的库例程。如果只想解决实际匹配电子邮件地址问题(即,如果您想要的是(通常)有效的错误代码),请使用别人提交的regular-expressions.info链接。
至于空字符串,^$
可以被多个人提及并且可以正常工作。
如果您在rails-activerecord验证中使用它,则可以设置
allow_blank: true
如:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }