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


127

我在SO中找到了许多Regex电子邮件验证,但没有找到任何接受空字符串的验证。仅通过正则表达式可以做到这一点吗?仅接受空字符串或电子邮件?我只想在正则表达式上使用它。

Answers:


311

此正则表达式模式将匹配一个空字符串:

^$

这将匹配(粗略地)电子邮件或空字符串:

(^$|^.*@.*\..*$)

1
要考虑的事情,做^(|。* @。* \ .. *)$应该具有与说空白或仅使用^和$一次来整理它的效果相同的效果。
Runevault,2012年

1
这已经很老了,但是我偶然发现了这个,并在答案上遇到了麻烦。在某些情况下,字符串的开头是隐藏的,但仍与匹配^,在这种情况下,实际上是在字符串中间寻找电子邮件或什么也不找。为此(email_regex)?,更适合。
jclancy 2013年

在尝试使用RegEx进行验证之前,请务必先阅读有关电子邮件验证极其复杂的内容。stackoverflow.com/questions/201323/...
布莱恩·肯尼迪

这将与以下电子邮件test.test@test相匹配。我认为这是更好的^ $ | ^ [^ \ s @] + @ [^ \ s @] + \。[^ \ s @] + $,因为它将接受类似test@test.se的电子邮件
dont_trust_me

在特定的Java应用程序中,^$它不起作用,但起作用^(?!.):[[ ^字符串开头,(?!)负向超前,.任何字符-不包括换行]
LightCC

8

匹配空字符串或电子邮件

(^$|^[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)$)

详细了解与正则表达式匹配的电子邮件:

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


2

上面的答案可以工作($为空),但是我只是尝试了一下,它也可以像下面这样空着:

/\A(INTENSE_EMAIL_REGEX|)\z/i

逆序相同

/\A(|INTENSE_EMAIL_REGEX)\z/i

0

不要将电子邮件与正则表达式匹配。它非常丑陋,漫长而复杂,您的正则表达式解析器可能仍然无法处理它。尝试找到匹配它们的库例程。如果只想解决实际匹配电子邮件地址问题(即,如果您想要的是(通常)有效的错误代码),请使用别人提交的regular-expressions.info链接。

至于空字符串,^$可以被多个人提及并且可以正常工作。


13
丑陋的正则表达式实际上可以由正则表达式解析器处理。不仅仅因为它的丑陋就使用正则表达式是愚蠢的。
彼得

这不是建设性的。RegEx经过尝试和测试(绝非丑陋-您会说它的工作原理非常优雅吗?)。含糊其辞地建议一个没有任何可能解决方案指导的图书馆,这根本无济于事。每个人都需要的书签:code.tutsplus.com/tutorials/...
pimbrouwers

众所周知,正则表达式很难读取,维护和调试,这使其成为通过调用库来替换的主要候选对象。
einnocent

2
作为记录:如果我知道OP使用的是哪种语言,我很乐意推荐一个特定的库。由于这是一个与语言无关的问题,因此我的选择非常有限。
凯文

2
正则表达式不应该很漂亮。按照这种逻辑,没有人应该使用正则表达式。如果您非常坚决要替换一个库,那么您认为该库将要做什么呢?它要么需要很长,很复杂的代码,要么要使用正则表达式……到那时,您最好只实现自己的“库”。如今,如果有人不知道如何使用正则表达式,无论如何他们都不应该承担验证电子邮件地址的任务……
Andrew


0

我更喜欢/^\s+$|^$/gi匹配空白处。

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


3
如果使用^ \ s * $,则不需要or或case。另外,也不需要g或i修饰符,因为它与整行匹配并且不包含任何带有大小写的字符。
卡多2014年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.