正则验证在表单的提交中使用相当频繁,在此整理了一下常用的表达式。
(1)用户名 : 2-14个英文或2-7个汉字(数字、下划线)
var regName = /^([\u4e00-\u9fa5\d_]{2,7})$|^([a-zA-Z0-9_]{2,14})$/;
(2)手机号: 中国大陆手机号
var regPhone = /^1[356789][\d]{9}$/;
var regTel = /^\d{3}-\d{8}|\d{4}-\{7,8}$/ //固定电话
(3)密码: 只能包含字母、数字和下划线,长度6~14位
var regPwd1 = /^[\w]{6,14}$/; //随意组合
var regPwd2 = /^[a-zA-Z]\w{5,13}$/; //必须以字母开头
var regPwd3 = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,14}$/; //必须包含大小写字母和数字-->强密码
var regPwd4 = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*?]).{6,14}$ //必须包含大小写字母和数字和特殊符号
关于强密码,涉及到正则的分组和前瞻。一个()
表示一个分组,regPwd3
中包含3个组。详细的分组介绍推荐 ☞ 去看看
关于前瞻,我们都知道前瞻分为 正向前瞻 和 负向前瞻,通俗的解释一下什么是“前” :正则表达式从文本的头部向尾部开始解析,即文本尾部方向,称为“前”
,而前瞻就是在正则表达式匹配到规则的时候向前检查是否符合断言,详细的前瞻介绍推荐 ☞ 去看看。regPwd3
中(?=.*\d)
表示必须包含数字,数字的前面可以有或没有任意字符(“.
”代表任意字符,“*
”代表0个或多个),同理的(?=.*[a-z])
表示至少有一个小写字母。
(4)邮箱: 可包含".-_",但不能以特殊符号开始或结束
var regEmail = /^([0-9A-Za-z]+[-_\.]*[0-9A-Za-z]+)@([0-9A-Za-z]+\.[A-Za-z]{2,3}(\.[a-zA-Z]{2,3})?)$/;
由于不能以特殊符号开始或结束,所以[-_\.]*
前后的表达式是"+
",特殊符号的前后至少要有一个字符,邮箱的后缀由两部分或三部分组成,所以最后的(\.[a-zA-Z]{2,3})?
是可选内容,这里的"?
"表示范围0-1
(即0次或1次)。
(4)年龄: 0-120岁
var regAge = /^((1[0-1]|[1-9])?\d|120)$/
表达式分为120岁和小于120岁,小于120即左边部分,(1[0-1]|[1-9])
可有可无,有时又分为100-119岁或10-99岁,无时就只剩"\d"
即0-9岁。
(5)QQ号: 5-10位,不以0开头
var regQQ = /^[1-9][0-9]{4,9}$/
(6)身份证: 二代身份证,共18位
var regID = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
身份证不以0头,前6位为地区代码,7-14为生日信息yyyymmdd
,(0[1-9])|(1[0-2])
保证月份在01-12之间,([0-2][1-9]
得到01-29以及|10|20|30|31
得到完整的01-31日。15-17位为顺序号,最后一位为检验码,0-9或"X"或"x",即[0-9Xx]