同时匹配邮箱和电话号码的正则表达式
要想很完美的匹配,不太简单。
各邮箱提供商的标准都多少有些许差别。如:
163:6-18个字符,可使用字母、数字、下划线,需以字母开头。
gmail:可以使用字母、数字和英文句点,不能使用除字母
(a-z)、数字和英文句号外的其他字符,下划线也是不可以的。
yahoo:4至32个字符(包括字母、数字、下划线、单点),且必须以英文字母开头。
sina:4-16个字符,支持英文小写、数字、下划线,不支持全部为数字或下划线。
qq:由3-18个英文、数字、点、减号、下划线组成。
其他的提供商还有更多格式标准。
而对于电话号码:
国内固定电话城市区号,有三位的,也有四位的。
固定电话号码有七位的,也有八位的。
手机号码包括:
中国移动:134、135、136、137、138、139、147、150、151、152、157、158、159、182、187、188。
中国联通:130、131、132、155、156、185、186
中国电信:133,153,,180,189
如果再加上国外的号码的话,要考虑的更多。
要想都匹配并且都是有效的话,挺麻烦的,这里的匹配不能算完美,但也考略了不少的场景。
如果要写的很完美的话,我觉得要加一些逻辑判断。
比如说,对邮箱和电话号码判断是哪家提供商的。
代码贴进去,总是会自己变形,那句正则完整的是:p=re.compile(‘[^\._-][\w\.-]+@(?:[A-Za-z0-9]+\.)+[A-Za-z]+$|^0\d{2,3}\d{7,8}$|^1[358]\d{9}$|^147\d{8}$‘)
Python-同时匹配邮箱和电话号码的正则表达式,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/baoyiluo/p/3713770.html