正则表达式空字符串或电子邮件

我在 SO 中发现了很多正则表达式的电子邮件验证,但是我没有发现任何可以接受空字符串的验证。这只能通过正则表达式实现吗?只接受空字符串或电子邮件?我只想用正则表达式。

343786 次浏览

这个 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)$)

查看更多关于匹配 regex 本身的电子邮件:

Http://www.regular-expressions.info/email.html

不要将电子邮件与正则表达式匹配。它是 极其丑陋,冗长而复杂,而且您的正则表达式解析器可能无法处理它。尝试找到一个库例程来匹配它们。如果您只想解决与电子邮件地址匹配的 很实际问题(也就是说,如果您想要发生(通常)工作的错误代码) ,请使用正则表达式。别人提交的信息链接。

至于空字符串,多个人都提到了 ^$,它会很好地工作。

上面的答案有效($for void) ,但是我刚刚尝试了这个方法,它也可以像这样保持为空:

/\A(INTENSE_EMAIL_REGEX|)\z/i

同样的事情在倒序

/\A(|INTENSE_EMAIL_REGEX)\z/i

我更喜欢用 /^\s+$|^$/gi来匹配空格和空格。

console.log("  ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));

这将解决,它将接受空字符串或精确的电子邮件 ID

"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"

如果您正在 Rails-activerrecord 验证中使用它,则可以设置 allow_blank: true

作为:

validates :email, allow_blank: true, format: { with: EMAIL_REGEX }

如果需要覆盖任意长度的空格,那么可以使用以下正则表达式:

"^\s*$"