Home / Blog / it

JavaScript常用正则

Author: Vic.Wang 2014/05/25 Tags:js正则regexp验证

正则是个很好的东西,在工作中运用,能带给我们很多的便利,这里不说正则怎么写,提供一些写好的常用正则,随便写了点给大家,难免有不严谨处,如有问题欢迎提出。 ^_^

手机号:

        /^(1[34578][0-9])\d{8}$/
                    

匹配13、14、15、17、18开头的手机号码,现在虚拟运营商开放了,也有17开头的号码了哦,这个正则匹配的是大多数号码,如要更严格的,继续细化号码段。比如135、139、151等等。

身份证:

        /^[1-8](\d{14})$|^[1-8](\d{16})[0-9xX]$/

        /^[1-8](\d{14})$|^[1-8](\d{16})[0-9X]$/i
                    

匹配15或18位的身份证号码。

补充点身份证号码规则的知识,我国的身份证号码是由15位数字或者18位数字字母组成的。99年前身份证是15位,由于千年虫的问题,15位的身份证号码只能为1900年1月1日到1999年12月31日出生的人编号,所以后来改为18位了。

根据GB 11643-1999的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左到右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

身份证规则

需要注意的是校验码会出现字母的情况,校验码是根据前17位数字,按照统一的公式计算出来的,计算出来的值是0-9,就显示数字,如果是10的话,因为最多18位,加上10就变成19位了,所以就改用字母,又因为在罗马数字中的10是X,最终有了18位号码尾号是X的情况。

这里对身份证的规则不详细说,有兴趣的自己去查国标或者百度,一搜一大堆。

这里也只是简单的验证下身份证号码,要想知道合不合法,就需要写程序去校验了。

QQ号:

        /^[1-9]\d{4,10}$/
                    

匹配QQ号码,5-11位。

QQ号码是没有低于5位的,目前也没有11位以上,而且号码的第一位也不可能是0开头的。

微信号:

        /^[a-zA-Z][\w\-]{5,19}$/
                    

匹配微信号,以字母开头6-20位。

微信号的规则,特地去查了官方的注册规则,微信号要求以字母开头,字母数字_-都是可以的,6到20位。

电子邮箱:

        /^\w([\.-\w])*@[a-zA-Z0-9]([\.\w])*$/
                    

匹配大多数的邮箱规则。xx@xx.xx

这个正则能匹配大多数的邮箱,毕竟是大多数的,只能说能过滤60%的非法邮箱吧。邮箱的后缀也不能限定死,qq.com、163.com、126.com等等,用户要是用的自己的邮箱服务器呢,电子邮箱这块的匹配精确度不高的,无从预计。最好的是用邮箱插件,直接让用户选择什么类型的邮箱。

小结:正则匹配的始终是多数,能帮我们挡住大部分的非法数据,但正则也不是万能的,有些情况我们无法预计到,即使预计到了也无法去规避,熟悉规则的人还是能很容易就绕过去的。