我如何重写这个正则表达式以匹配所有的电子邮件地址,而不是那些
其中包含"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})(]?)$
通过删除<
将负向后看更改为负向前看,并按如下方式重新定位
^([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-Zd-]+.)+))([a-zA-Z]{2,4}|d{1,3})(]?)$"