php email正则表达式详解
发布时间:2022-07-26 10:26:28 所属栏目:PHP教程 来源:互联网
导读:一般的email,形如zhangshan@163.com,abc@sina.com.cn这样一些常用的形式就行了,但是在我们公司的一些客户中邮箱却有一些zhangshna.Mr@163.com,abc_Wang.dd@sian.com,abc_Wang.dd.cc@sian.com这种类似的形式,在@符号之前还有点.,原来是拿来就用,可是现在就不
|
一般的email,形如zhangshan@163.com,abc@sina.com.cn这样一些常用的形式就行了,但是在我们公司的一些客户中邮箱却有一些zhangshna.Mr@163.com,abc_Wang.dd@sian.com,abc_Wang.dd.cc@sian.com这种类似的形式,在@符号之前还有点.,原来是拿来就用,可是现在就不行,得自己研究正则的用法了. 原来的正则表达式,代码如下: /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/; 我根据我的实际情况修改后的正则表达式,代码如下: /^(w)+(.w+)*@(w)+((.w{2,3}){1,3})$/; 或者:/^(w)+(.w+)*@(w)+((.w+)+)$/; 首先从命名下手,以@划分: (1)左边email前缀 ——字母、数字、下划线、点和减号(只能以数字和字母开头结尾) (2) 右边域名规则 ——字母、数字和减号(只能以数字和字母开头结尾,并且不能超过63个字符) 好了规则有了,剩下的就是匹配了,希望能尽量做到不放过一个“坏人”,代码如下: 左边[a-zd]([a-zd_.-]*[a-zd])*@([a-zd][a-zd-]{0,61}[a-zd].){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语句中用时还是会有些问题,不过已经基本满足我的要求了. 字符描述: ^ :匹配输入的开始位置。 :将下一个字符标记为特殊字符或字面值。 * :匹配前一个字符零次或几次。 + :匹配前一个字符一次或多次。 (pattern) 与模式匹配并记住匹配。 x|y:匹配 x 或 y。 [a-z]:表示某个范围内的字符,与指定区间内的任何字符匹配。 w:与任何单词字符匹配,包括下划线。 {n,m} 最少匹配 n 次且最多匹配 m 次 $:匹配输入的结尾. (编辑:漯河站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
