说明
1.以下的验证规则是在公司项目中总结出来的,有的规则可能不适合您需要自行修改规则。
2.这些规则是自己和同事以前写的,可能不是最新,欢迎提出。
常用类
用户名
//用户名正则,4到16位(字母,数字,下划线,减号)
var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
//输出 true 例如:xiaohua_qq
console.log(uPattern.test("caibaojian"));
密码强度
//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
var pPattern = /^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/;
//输出 true 例如:Kd@curry666
console.log(pPattern.test("Kd@curry666"));
// 弱密码(长度是6位以下就算字母、数字、特殊字符三项都包括,强度也是弱的)
var pPattern1 = /(?=.{6,}).*$/;
// 输出 true
console.log(pPattern1.test('asdf'))
// 中等强度密码(密码为7位及以上,大小字母、数字三项中有两项,特殊字符可有可无)
var pPattern2 = /^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$/;
// 输出 true
console.log(pPattern2.test('adb123adg'))
// 强密码(长度大于8,必须是字母大写,字母小写,数字,特殊字符组成)(暂未验证)
var pPattern3 = /^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$/;
// 输出 true
console.log(pPattern3.test('Aa123##asd'))
纯数字
// 纯数字正则
var posPattern = /^\d{1,}$/;
//输出 true 例如: 12345678
console.log(posPattern.test("42"));
是否由数字和字母组成
// 是否由数字和字母组成正则
var posPattern = /^[A-Za-z0-9]+$/;
//输出 true 例如:james666, haha233hi
console.log(posPattern.test("james666"));
纯英文字母
// 纯英文字母正则
var posPattern = /^[a-zA-Z]+$/;
//输出 true 例如:Russel
console.log(posPattern.test("Russel"));
纯小写英文字母组成
// 纯小写英文字母组成正则
var posPattern = /^[a-z]+$/;
//输出 true 例如:russel
console.log(posPattern.test("russel"));
纯大写英文字母
// 纯大写英文字母正则
var posPattern = /^[A-Z]+$/;
//输出 true 例如:ABC, KD
console.log(posPattern.test("ABC"));
只包含中文和数字
// 只包含中文和数字正则
var numP = /^((?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])|(\d))+$/;
// 输出 true 例如:哈哈哈, 你好6啊
console.log(numP.test("哈哈哈"));
不能包含字母
// 不能包含字母
var numP = /^[^A-Za-z]*$/;
// 输出 true 例如:你好6啊, @¥()!
console.log(numP.test(" @¥()!"));
帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线组合
// 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线组合正则
var numP = /^[a-zA-Z][a-zA-Z0-9_]{4,15}$/;
// 输出true 例如:justin, justin1989,justin_666
console.log(numP.test("justin_666"));
纯中文/汉字
// 纯中文/汉正则
var numP = /^(?:[\u3400-\u4DB5\u4E00-\u9FEA\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29]|[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0])+$/;
// 输出true 例如:正则,前端
console.log(numP.test("正则"));
是否小数
// 是否小数正则
var numP = /^\d+\.\d+$/;
// 输出true 例如:0.0,0.09
console.log(numP.test("0.09"));
整数正则
//正整数正则
var posPattern = /^\d+$/;
//负整数正则
var negPattern = /^-\d+$/;
//整数正则
var intPattern = /^-?\d+$/;
//输出 true
console.log(posPattern.test("42"));
//输出 true
console.log(negPattern.test("-42"));
//输出 true
console.log(intPattern.test("-42"));
数字正则
可以是整数也可以是浮点数
//正数正则
var posPattern = /^\d*\.?\d+$/;
//负数正则
var negPattern = /^-\d*\.?\d+$/;
//数字正则
var numPattern = /^-?\d*\.?\d+$/;
console.log(posPattern.test("42.2"));
console.log(negPattern.test("-42.2"));
console.log(numPattern.test("-42.2"));
//Email正则
var ePattern = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
//输出 true 例如:27222722@qq.com, ninini@163.com
console.log(ePattern.test("ninini@163.com"));
国内手机号
// 中国手机号(严谨), 根据工信部2019年最新公布的手机号段
var numP = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-7|9])|(?:5[0-3|5-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[1|8|9]))\d{8}$/;
//输出 true 例如:008618311006933, +8617888829981, 19119255642
console.log(numP.test("19119255642"));
// 中国手机号(宽松), 只要是13,14,15,16,17,18,19开头即可
var mPattern = /^(?:(?:\+|00)86)?1[3-9]\d{9}$/;
//输出 true 例如:008618311006933, +8617888829981, 19119255642
console.log(mPattern.test("19119255642"));
// 中国手机号(最宽松), 只要是1开头即可, 如果你的手机号是用来接收短信, 优先建议选择这一条
var numP1 = /^(?:(?:\+|00)86)?1\d{10}$/;
//输出 true 例如:008618311006933, +8617888829981, 19119255642
console.log(numP1.test("19119255642"));
//http://caibaojian.com/regexp-example.html
-
规则说明:
国内手机号码为11位数字,前两位只能为:
13 \ 14 \ 15 \ 17 \ 18
。 -
三大运营商号段分配情况
号段 | 可选值 |
---|---|
中国移动 | |
13x | 134X(0-8)、135、136、137、138、139 |
14x | 147(数据卡) |
15x | 150、151、152、157X(0-7\9)(TD)、158、159 |
17x | 182 、183、184、187(3G\4G)、188(3G) |
18x | 分机号可有可无 |
19x | 98(2017-08-16 说明见附录一) |
中国联通 | |
13x | 130、131、132 |
14x | 145(数据卡) |
15x | 155、156 |
17x | 176(4G) |
18x | 185(3G)、186(3G) |
16x | 166(2017-08-16 说明见附录一) |
中国电信 | |
13x | 133、(1349卫通) |
15x | 153 |
17x | 177(4G)、173(最近刚开通) |
18x | 180(3G)、181(3G)、189(3G) |
19x | 199(2017-08-16 说明见附录一) |
虚拟运营商 | |
170 | - |
国内座机号
// 座机号正则(可以不需要区号)
var mPhone = /^(0\d{2,3})?(-)?\d{7,8}(-\d{1,6})?$/;
//输出 true 例如:23091234
console.log(mPhone.test("23091234"));