0

我需要有效的电子邮件正则表达式,以 or 分隔" "并以@a.comor结尾b.com

例如:

有效电子邮件string"email1@a.com email2@b.com email3@a.com"

无效的电子邮件string"email1@a.com email2@b.com email3@c.com"

4

5 回答 5

4

我不一定认为正则表达式在这里是可扩展和可维护的解决方案。我宁愿:

  1. 在空白处拆分列表(可能在 .com/.org 等之前的空白处)
  2. 提取域名后-@
  3. 将此与白名单(或黑名单)进行比较

我非常喜欢正则表达式,但我并不总是认为它们是解决方案。有关此问题的讨论,请参见此处,并注意以下内容!

有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。

于 2012-11-30T15:14:31.097 回答
1

你可以试试这个表达式:

^(( |^)[^ @]+@[ab]\.com)+$
//  ^    ^   ^  ^    ^
//  |    |   |  |    +- The mandatory .com   
//  |    |   |  +------ Either a or b
//  |    |   +--------- An @ sign
//  |    +------------- Anything but space or @ repeated at least once
//  +----------------------- Preceded by a space or the beginning of line
于 2012-11-30T15:13:36.417 回答
0

(email[1-3]\@[ab].com )*email[1-3]\@[ab].com?

(将 [1-3] 和 [ab] 替换为真正适合您的内容)。

于 2012-11-30T15:13:35.003 回答
0

试试这个:^(. @(a|b).com(|\s) $

永久链接- 尝试输入一个无效的字符串,如“c.com”,看看它是否也有效

Regexpal是一个很好的简单工具,可以开始为您尝试解决的任何问题制作正则表达式!

于 2012-11-30T15:13:38.413 回答
0
[A-Za-z0-9_.-]+@[ab]\.com( [A-Za-z0-9_.-]+@[ab]\.com)*

[A-Za-z0-9_.-]+如果您想限制更多,您可以更改该部分。

于 2012-11-30T15:14:32.297 回答