从电子邮件地址列表中获取电子邮件值的正则表达式完全匹配

时间:2018-11-02 14:07:35

标签: regex

我有一个文本字段,用于存储电子邮件地址列表,例如:x@demo.com; a.x@demo.com。我还有另一个文本字段,用于存储与电子邮件列表匹配的确切值,即如果/x@demo.com/i在x@demo.com; a.x@demo.com中,则它应该返回x@demo.com。

我遇到的问题是,如果我有/a.x@demo.com/i,我会得到x@demo.com而不是a.x@demo.com

我知道正则表达式/^x@demo.com$/i,但是这意味着我只能在一封电子邮件地址列表中收到一封无济于事的电子邮件。我没有运气就尝试了其他一些正则表达式。

关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以使用略有变化的正则表达式:

 /(^|;)x@demo.com($|;)/i

它将从字符串的开头或在分号后开始匹配,并在字符串的末尾或分号处结束。

Edit

小的变化,它使用回望和期待,然后您只会得到想要的匹配项:

(?<=^|;)x@demo.com(?=$|;)

Edit2

要允许Spaces围绕分号以及在开始和结束处,请使用以下字符(@引号):

@"(?<=^\s*|;\s*)x@demo.com(?=\s*$|\s*;)"

或使用两次转义:

"(?<=^\\s*|;\\s*)x@demo.com(?=\\s*$|\\s*;)"