C# - 电子邮件的常规表达,但不包括“hotmail,gmail,yahoo”

时间:2013-03-25 09:41:23

标签: c# regex

如何重写此正则表达式以匹配所有电子邮件地址,而不是那些 其中包含“ hotmail,gmail和yahoo ”。到目前为止我写了这个:

^([a-zA-Z0-9_\-\.]+)@(?<!hotmail|gmail|yahoo)((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

1 个答案:

答案 0 :(得分:2)

通过删除<将负面后视更改为否定前瞻,并按如下方式重新定位

^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(?!hotmail|gmail|yahoo)(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$

以上假设"hotmail,gmail and yahoo"将直接跟随@

更短的等价物:

@"^([\w.-]+)@(\[(\d{1,3}\.){3}|(?!hotmail|gmail|yahoo)(([a-zA-Z\d-]+\.)+))([a-zA-Z]{2,4}|\d{1,3})(\]?)$"