C#-电子邮件的正则表达式,但排除“hotmail,gmail,yahoo”

cod*_*der 1 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})(\]?)$
Run Code Online (Sandbox Code Playgroud)

Mik*_*keM 5

通过删除 将负向后视改变为负向后视<,并将其重新定位如下

^([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})(\]?)$
Run Code Online (Sandbox Code Playgroud)

以上假设"hotmail,gmail and yahoo"将直接遵循@.

更短的等价物:

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