常用JavaScript正则表达式汇编与示例详解

目前收集整理了21个常用的javaScript正则表达式,其中包括用户名、密码强度、整数、数字、电子邮件地址(Email)、手机号码、身份证号、URL地址、 IP地址、 十六进制颜色、 日期、 微信号、车牌号、中文正则等。表单验证处理必备,赶紧收藏吧!

还会陆续加入新的正则进来,大家多提宝贵意见!

2.1 用户名正则 2.1.1 基本用户名正则

在做用户注册时,都会用到用户名正则校验。

定义基本用户名命名规则如下:

最短4位,最长16位 {4,16}

可以包含小写大母 [a-z] 和大写字母 [A-Z]

可以包含数字 [0-9]

可以包含下划线 [ _ ] 和减号 [ - ]

首字母只能是大小写字母

var pattern = /^[a-zA-Z][a-zA-Z0-9_-]{3,15}$/; //输出 true console.log("ifat3 : "+pattern.test('ifat3')); //输出 true console.log("Ifat3 : "+pattern.test('Ifat3')); //输出 true console.log("ke30 : "+pattern.test('ke30')); //输出 false console.log("30ke : "+pattern.test('30ke')); //输出 false console.log("ke3 : "+pattern.test('ke3')); 输出 false console.log("ke30@ : "+pattern.test('ke30@')); //输出 false console.log("ke30ke30ke30ke30ke30 : "+pattern.test('ke30ke30ke30ke30ke30'));

2.1.2 中文用户名正则

如果规则中加入允许中文用户名,则变更正则表达式如下:

var pattern = /^[a-zA-Z\u4E00-\u9FA5][a-zA-Z0-9\u4E00-\u9FA5_-]{3,15}$/; //输出 true console.log("ifat3 : "+pattern.test('ifat3')); //输出 true console.log("Ifat3 : "+pattern.test('Ifat3')); //输出 true console.log("三十课毛瑞 : "+pattern.test('三十课毛瑞')); //输出 false console.log("30ke : "+pattern.test('30ke')); //输出 false console.log("ke3 : "+pattern.test('ke3')); //输出 false console.log("ke30@ : "+pattern.test('ke30@')); //输出 false console.log("ke30ke30ke30ke30ke30 : "+pattern.test('ke30ke30ke30ke30ke30'));

其中[\u4E00-\u9FA5]是汉字的正则匹配,包括基本汉字2万多个,其中\u4E00表示汉字“一”,具体请参见《汉字unicode编码范围》。

2.2 密码强度正则

//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符 var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/; //输出 true console.log("iFat3#:"+pPattern.test("iFat3#"));

上述正则表达式只能对用户密码强度进行基本的通过性判定,关于密码强度验证更多的内容可参见:基于规则评分的密码强度检测算法分析及实现。

2.3 数字相关正则 2.3.1 整数正则

//正整数正则 var posPattern = /^\d+$/; //负整数正则 var negPattern = /^-\d+$/; //整数正则 var intPattern = /^-?\d+$/; //输出 true console.log("30:"+posPattern.test("30")); //输出 true console.log("-30:"+negPattern.test("-30")); //输出 true console.log("-30:"+intPattern.test("-30"));

2.3.2 浮点数正则

//正浮点数正则 var posPattern = /^\d*\.\d+$/; //负浮点数正则 var negPattern = /^-\d*\.\d+$/; //两位小数正则 var twoPattern = /^-?\d*\.\d{2}$/; //输出 true console.log("30.2:"+posPattern.test("30.2")); //输出 true console.log("-30.2:"+negPattern.test("-30.2")); //输出 true console.log("-30.22:"+twoPattern.test("-30.22"));

2.3.3 整数浮点数正则

可以是整数也可以是浮点数

//正数正则 var posPattern = /^\d*\.?\d+$/; //负数正则 var negPattern = /^-\d*\.?\d+$/; //数字正则 var numPattern = /^-?\d*\.?\d+$/; //输出 true console.log("30.2:"+posPattern.test("30.2")); //输出 true console.log("-30.2:"+negPattern.test("-30.2")); //输出 true console.log("-30.2:"+numPattern.test("-30.2"));

2.4 日期正则 2.4.1 出生日期正则

var pattern = /^((19[2-9]\d{1})|(20((0[0-9])|(1[0-8]))))\-((0?[1-9])|(1[0-2]))\-((0?[1-9])|([1-2][0-9])|30|31)$/; //输出 true console.log(pattern.test("1923-3-18")); //输出 true console.log(pattern.test("1923-4-31")); //输出 true console.log(pattern.test("1923-2-29")); //输出 true console.log(pattern.test("2016-2-29"));

上述正则验证还不完善,主要是2,4,6,9,11月份的天数问题。

2.4.2 通用日期正则

//日期正则,复杂判定 var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/; //输出 true console.log(dP2.test("2017-02-11")); //输出 false console.log(dP2.test("2017-15-11")); //输出 false console.log(dP2.test("2017-02-29"));

2.5 Email正则 2.5.1 基本Email正则

var pattern = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; //输出 true console.log(pattern.test('cn30ke@163.com')); //输出 true console.log(pattern.test('ifat3@sina.com.cn')); //输出 true console.log(pattern.test('ifat3.it@163.com')); //输出 true console.log(pattern.test('ifat3_-.@30ke.cn')); //输出 false console.log(pattern.test('ifat3@30ke.online')); //输出 false console.log(pattern.test('毛瑞@30ke.cn'));

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjxpzw.html