天马行空工作室

 找回密码
 加入天马
搜索
查看: 2386|回复: 1

一个邮箱正则的学习

[复制链接]
发表于 2014-8-10 02:06:22 | 显示全部楼层 |阅读模式
正则表达式总是看完用,用完忘,忘了看。
很多地方都有现成的正则,如用户名、手机,邮箱等。
今天遇到一个邮箱的正则问题,仔细学习发现网上的很多不对,特此研究。
以百度百科为例
http://baike.baidu.com/view/94238.htm
其邮箱的正则的表达式为
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
首先我们看@后有\w,\w的意思是
匹配包括下划线的任何一个单词字符,等价于:[A-Za-z0-9_]。
域名规定为26个字母10个数字和英文横杠-,横杠不能在首位。所以下划线出现是不对的。
我的思路
1、域名开头必须是字母或数字,用[A-Za-z0-9],结合@也可以是:@(?=[A-Za-z0-9]),表示@后面必须紧跟字母或数字【(?=xxx)是正向预查】;
2、.点号前面必须是字母或数字,用(?<=[A-Za-z0-9])\.,表示点号前必须是字母或数字【(?=xxx)是反向预查】;
3、次级域名多次,([A-Za-z0-9][-A-Za-z0-9]*(?<=[A-Za-z0-9])\.)+
4、顶级域名只能是字母,[A-Za-z]+
最后满足的正则是([A-Za-z0-9][-A-Za-z0-9]*(?<=[A-Za-z0-9])\.)+[A-Za-z]+
最后邮箱的匹配就是/^(\w+\.)*?\w+@([A-Za-z0-9][-A-Za-z0-9]*(?<=[A-Za-z0-9])\.)+[A-Za-z]+$/

相关帖子

发表于 2015-11-30 02:19:32 | 显示全部楼层
学习了 顶一个
您需要登录后才可以回帖 登录 | 加入天马

本版积分规则

Archiver|手机版|小黑屋|天马行空工作室 ( 京ICP备12003429号  

GMT+8, 2019-3-27 03:11 , Processed in 0.309683 second(s), 23 queries .

Powered by Discuz! v8

© 2010-2014 一个邮箱正则的学习 - Php 天马行空工作室

快速回复 返回顶部 返回列表