我有一个电子邮件ID列表,其中我必须选择那些没有 ruba.com 作为域名的正则表达式。例如,如果我有ads@gmail.com,dgh @ rubd.com和ert @ ruba .com,那么我的正则表达式应该选择前两个ID。这个问题的正则表达式应该是什么?
我试过两个表达式:
[A-ZA-Z0-9 _ + - 。] + @ [^(鲁巴)] + [A-ZA-Z0-9 - ]。+ 和 的 [A-ZA-Z0-9 _ + - 。] + @ [^ R] [^ü] [^ B] [^ A] + [A-ZA-Z0-9 - ]。+
以上两者都不能满足我的要求。
答案 0 :(得分:0)
您可以使用否定前瞻来确保您与域 ruba.com 不匹配。
否定前瞻:(?!rubd)
会将与匹配您要排除的任何内容。此外,由于电子邮件通常包含多个单词字符(例如连字符和句点),因此最好使用[\w\.\-]
而不仅仅是\w
。
^[\w\.\-]+@(?!rubd)[\w\.\-]+\.(?:com|net|org|edu)$
答案 1 :(得分:0)
我认为通过电子邮件ID,您指的是@
符号前面的部分,否则这将是一个完整的电子邮件地址。
.+(?=@)(?!@ruba\.com)
.
点字符是正则表达式引擎的特殊符号
它用来捕捉一切*
也称为Kleene plus,表示您要捕获前一个符号的一个或多个实例,在我们的案例.
中;基本上你是在说“给我每一个字母”(?=@)
是一个积极的先行,即一种特殊的搜索功能,可确保后面的内容为@
;我正在使用它将光标移到@
和“停止”捕获的位置,否则+
会无限期地继续(?!@ruba\.com)
是一个负面的预测,即一种特殊的搜索功能,可确保后面的内容不是(!
)@ruba\.com
;我正在逃避这一点,不要把它与我之前谈论的捕捉全部符号混为一谈现场演示here。