正则表达式,如果所有单词都包含特定符号

时间:2013-06-04 15:17:18

标签: c# .net regex

我有一串电子邮件“test@test.lt; test2@test.lt; test3@test.lt”

如何编写简单的正则表达式来检查所有单词中是否包含[@。]至少一次?

5 个答案:

答案 0 :(得分:4)

不需要正则表达式:

bool allOk = str.Split(';').All(email => email.Count(c => c == '@') == 1);

虽然这可能会导致错误的结果(foo@bar_foo.com不是有效的电子邮件!)

答案 1 :(得分:1)

我不认为RegEx是必要的,但这是我将使用的模式; \b[a-zA-Z0-9]+@[a-zA-Z0-9]+\b

\b是单词边界,然后我有字母数字字符集。 +表示前一个char的一次或多次出现。所以它从单词边界开始说,它可以有0个或更多的任何字符跟随@,然后再一个,一个或多个字母数字字符后跟一个单词边界。

答案 2 :(得分:1)

您可以尝试:

[_a-zA-Z0-9-]+?@[_.a-zA-Z0-9-^;]+;?

这是一些字符后跟@加上一些字符不是';'然后是可选的; look at the demo here

答案 3 :(得分:0)

@jsfviky答案的这个简单变​​体允许域级和本地部分的电子邮件地址中的句点和连字符,以及一次性样式电子邮件地址的加号:

[a-zA-Z0-9-\.\+]{1,}@(?:[a-zA-Z])[a-zA-Z\.-]{1,}.[a-zA-Z]{1,4}

实际上这是您所需要的全部内容,但有效的电子邮件地址可能包含!#$%&'*+-/=?^_ {|}〜`中的任何一个,因此您可能希望根据使用情况改变这一点。

答案 4 :(得分:-2)

如果您需要电子邮件验证程序,请试用此正则表达式:

  

[A-ZA-Z0-9 - ]。{1,} @([A-ZA-Z])[A-ZA-Z] {1,} [A-ZA-Z] {1 ,4}