用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - javascript代码库

常用的匹配Email电子邮件地址的js正则表达式

2014-02-03 作者: 小蜜锋举报

[javascript]代码库

先介绍下Email的规则:local-part@domain  
   local-part最长64,domain最长253,总长最长256  
   local-part可以使用任意ASCII字符:  
   大小写英文字母 a-z,A-Z  
   数字 0-9  
   字符 !#$%&'*+-/=?^_`{|}~  
   字符 .不能是第一个和最后一个,不能连续出现两次  
   但是有些邮件服务器会拒绝包含有特殊字符的邮件地址  
   domain(域名)仅限于26个英文字母、10个数字、连词号-  
   连词号-不能是第一个字符  
   顶级域名(com、cn等)长度为2到6个  

先说说网上流传的版本:  
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*  
()  莫名奇妙的分组,如果只分组不记录,可以使用(?:)  
@\w domain不能包含下划线_  
\w+([-.]\w+)*   顶级域名不符合规则  

修正如下:  
var remail = /^([\w-_]+(?:\.[\w-_]+)*)@((?:[a-z0-9]+(?:-[a-zA-Z0-9]+)*)+\.[a-z]{2,6})$/i  
remail.exec( 'nuysoft@gmail.com' ) // "nuysoft@gmail.com", "nuysoft", "gmail.com"]  
remail.exec( 'nuysoft@gmail.comcomcom' ) // null  
remail.exec( 'nuysoft@_gmail.com ) // null  

修正后的正则有如下局限性:  
   不支持中文邮箱、中文域名,之所以不在其中支持是因为我个人的爱好倾向,反感这类华而不实的玩意  
   不支持特殊符号,避免非邮件服务器拒绝,如果需要,可以添加。  


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...