email正则这块以前没有详细了解过,一般百度找个能用就用了,今天要匹配一个email记录非常多的表中以前漏掉的不合法email,在网上找了半天发现很多都不行,没办法只好自己写了
首先从命名下手,以@划分:
(1)左边email前缀 ——字母、数字、下划线、点和减号(只能以数字和字母开头结尾)
(2) 右边域名规则 ——字母、数字和减号(只能以数字和字母开头结尾,并且不能超过63个字符)
好了规则有了,剩下的就是匹配了,希望能尽量做到不放过一个“坏人”:
左边[a-z\d]([a-z\d_\.-]*[a-z\d])* @ ([a-z\d][a-z\d-]{0,61}[a-z\d]\.){1,3}[a-z]{2,6}([\.][a-z]{2,3})?右边
拼起来加上^$i:/^[a-z0-9]([a-z0-9-_\.]*[a-z0-9])*@([a-z0-9][a-z0-9-]{0,61}[a-z0-9]\.){1,3}[a-z]{2,6}([\.][a-z]{2,6})?$/i
我用PHP试了一下效果还不错,就是在sql语句中用时还是会有些问题,不过已经基本满足我的要求了,找出了很多漏网之鱼呀