我有一串电子邮件“test@test.lt; test2@test.lt; test3@test.lt”
如何编写简单的正则表达式来检查所有单词是否在单词中至少包含一次 [@.]?
不需要正则表达式:
bool allOk = str.Split(';').All(email => email.Count(c => c == '@') == 1);
虽然这可能会导致错误的结果(foo@bar_foo.com
不是有效的电子邮件!)
我不认为 RegEx 是必要的,但这是我会使用的模式;\b[a-zA-Z0-9]+@[a-zA-Z0-9]+\b
\b
是单词边界,然后我设置了字母数字字符。+
表示前一个字符出现一次或多次。所以它是从一个单词边界说的,它可以有 0 个或多个任何字符后跟一个 @,然后再一次,一个或多个任何字母数字字符后跟一个单词边界。
@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}