【发布时间】:2013-06-04 15:17:17
【问题描述】:
我有一串电子邮件“test@test.lt; test2@test.lt; test3@test.lt”
如何编写简单的正则表达式来检查所有单词中是否至少包含一次 [@.]?
【问题讨论】:
-
a.b@site.co.uk呢?
我有一串电子邮件“test@test.lt; test2@test.lt; test3@test.lt”
如何编写简单的正则表达式来检查所有单词中是否至少包含一次 [@.]?
【问题讨论】:
a.b@site.co.uk 呢?
不需要正则表达式:
bool allOk = str.Split(';').All(email => email.Count(c => c == '@') == 1);
虽然这可能会导致错误的结果(foo@bar_foo.com 不是有效的电子邮件!)
【讨论】:
【讨论】:
!@#,它对应于123,顺便说一句,不是电子邮件。
a_b@x.y.z 不匹配 - 不确定 OP 是否希望支持带有两个点的电子邮件(例如 me@hotmail.co.il),但绝对允许使用下划线。
我不认为 RegEx 是必要的,但这是我将使用的模式; \b[a-zA-Z0-9]+@[a-zA-Z0-9]+\b
\b 是单词边界,然后我设置了字母数字字符。 + 表示前一个字符出现一次或多次。所以它是说从一个单词边界开始,它可以有 0 个或多个任何字符后跟一个 @,然后再一次,一个或多个任何字母数字字符后跟一个单词边界。
【讨论】:
.*,然后是*,比如[a-zA-Z0-9]*
Hey, how's the g@ing mate?
@jsfviky 答案的这个简单变体允许在域级别和本地部分的电子邮件地址中使用句点和连字符,以及一次性样式电子邮件地址的加号:
[a-zA-Z0-9-\.\+]{1,}@(?:[a-zA-Z])[a-zA-Z\.-]{1,}.[a-zA-Z]{1,4}
实际上,这就是您所需要的,但有效的电子邮件地址可能包含!#$%&'*+-/=?^_{|}~`中的任何一个,因此您可能需要根据使用情况来改变它。
【讨论】:
如果您需要电子邮件验证器,请试试这个正则表达式:
[a-zA-Z0-9-]{1,}@([a-zA-Z.])?[a-zA-Z]{1,}.[a-zA-Z]{1 ,4}
【讨论】:
a@.b.c
- 字符?我知道_ 是,甚至可能是....你可以用\\w 缩短[a-zA-Z0-9_],顺便说一句。