我需要一个符合这些规则的电子邮件的正则表达式:
可以是
anyemail@anydomain.tld
OR
noreply@mydomain.com
然而,它不能是来自mydomain.com的任何其他电子邮件
到目前为止,我尝试使用类似的东西:
(\w+@[^mydomain]\w+.com)|(noreply@mydomain.com)
然而它似乎没有按预期工作 - 它以m
开头的每个域都失败了。就像anyemail@myotherdomain.com
会失败而不应该失败。我正在使用PHP regexp btw。
答案 0 :(得分:1)
在你的正则表达式中,[^mydomain]
是一个negated character class,匹配1个不是m
,y
,d
,o
的字符, a
,i
,n
。要实际限制某些通用模式,您需要使用lookaround(此处为预测),即(?!mydomain\.com)
。
请注意,要匹配任何TLD,您可以使用\w+
代替将其com
硬编码。
另外,如果要将文字.
符号与正则表达式匹配,则应该将其转义(\.
)或放在字符类[.]
内。
所以,使用
\w+@(?!mydomain\.com)\w+\.\w+|noreply@mydomain\.com
请参阅regex demo