正则表达式(常用)

密码

  1. 至少8位字母数字组合,不能为纯数字或纯字母
let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,}$/
  1. 不能包含纯数字、纯字母,8至16位
/^(?!^\d+$)(?!^[a-zA-Z]+$)(?!^\W+$)[a-zA-Z\d\W]{8,16}$/


解释:
(?!^\d+$)  不能为纯数字
(?!^[a-zA-Z]+$)  不能为纯字母
(?!^\W+$)  不能为纯特殊字符

  1. 必须是8-20位字母、数字或字符,至少包含两种
/^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$).{8,20}$/

  1. 密码为8~20个字符,可包含字母和数字
/^(?!^\d+$)(?!^[a-zA-Z]+$)(?!^\W+$)[a-zA-Z\d\W]{8,20}$/

手机号

  1. 规则
    以1开头;第二位数字为3,4,5,6,7,8,9中一个;第三位到十一位数字为0到9的任意一个数字
/^1[3-9]\d{9}$/
  1. 规则
    1、以1开头
    2、中间三位规则如下
    3、如果第二位为3,看第三位是否为4,如果是4,则第四位为0到8之间的数字,否则第三位为0到3和5到9之间的数字,第四位为0-9之间的数字;
    4、如果第二位为4,则第三位为5、7、9数字,第四位为0-9之间的数字;
    5、如果第二位为5,则第三位为0到3和5到9之间的数字,第四位为0-9之间的数字;
    6、如果第二位为6,则第三位为6,第四位为0-9之间的数字;
    7、如果第二位为7,则第三位为3,5,6,7, 8的数字,第四位为0-9之间的数字;
    8、如果第二位为8,则第三位为0-9之间的数字,第四位为0-9之间的数字;
    9、如果第二位为9,则第三位为1,3,8,9的数字,第四位为0-9之间的数字;
    10、后面七位为0到9之间的数字;
/^1((34[0-8])|(8\d{2})|(([35][0-35-9]|4[579]|66|7[35678]|9[1389])\d{1}))\d{7}$/

用户名

字母数字下划线 中文

/^[a-zA-Z\u4e00-\u9fa5]+$/

企业名称

字母数字中文

/^[\u4e00-\u9fa5_a-zA-Z0-9]+$/

姓名

/^[\u4E00-\u9FA5\uf900-\ufa2d·s]{2,20}$/

邮箱

/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/

身份证

 /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}([0-9]|x|X)$/
/^[1-9]\d{5}(19|20)\d{2}((0[1-9]|1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/

银行卡号

/^([1-9]{1})(\d{15}|\d{18})$/

汉字和英文 英文或者中文

/[^\u4E00-\u9FA5a-zA-Z]/g 

汉字中文

/[^\u4E00-\u9FA5]/g

税务号

/^[A-Z0-9]{15}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/

统一社会代码验证

static getTyshyxdm(value) {
        function Tyshyxdm() {
            this.firstarray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
            this.firstkeys = [3, 7, 9, 10, 5, 8, 4, 2];
            this.secondarray = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'W', 'X', 'Y'];
            this.secondkeys = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];
            this.verify = function(str) {
                var code = str.toUpperCase();

                /*
                统一社会信用代码由十八位的阿拉伯数字或大写英文字母(不使用I、O、Z、S、V)组成。
                 第1位:登记管理部门代码(共一位字符)
                 第2位:机构类别代码(共一位字符)
                 第3位~第8位:登记管理机关行政区划码(共六位阿拉伯数字)
                 第9位~第17位:主体标识码(组织机构代码)(共九位字符)
                 第18位:校验码​(共一位字符)
                */
                if (code.length != 18) {
                    return false;
                }
                var reg = /^\w\w\d{6}\w{9}\w$/;
                if (!reg.test(code)) {
                    return false;
                }
                /*
                 登记管理部门代码:使用阿拉伯数字或大写英文字母表示。​
                 机构编制:1​
                 民政:5​
                 工商:9​
                 其他:Y
                 */
                reg = /^[1,5,9,Y]\w\d{6}\w{9}\w$/;
                if (!reg.test(code)) {
                    return false;
                }
                /*
                 机构类别代码:使用阿拉伯数字或大写英文字母表示。​
                 机构编制机关:11打头​​
                 机构编制事业单位:12打头​
                 机构编制中央编办直接管理机构编制的群众团体:13打头​​
                 机构编制其他:19打头​
                 民政社会团体:51打头​
                 民政民办非企业单位:52打头​
                 民政基金会:53打头​
                 民政其他:59打头​
                 工商企业:91打头​
                 工商个体工商户:92打头​
                 工商农民专业合作社:93打头​
                 其他:Y1打头​
                 */
                reg = /^(11|12|13|19|51|52|53|59|91|92|93|Y1)\d{6}\w{9}\w$/;
                if (!reg.test(code)) {
                    return false;
                }
                /*
                 登记管理机关行政区划码:只能使用阿拉伯数字表示。按照GB/T 2260编码。​
                 例如:四川省成都市本级就是510100;四川省自贡市自流井区就是510302。​
                */
                reg = /^(11|12|13|19|51|52|53|59|91|92|93|Y1)\d{6}\w{9}\w$/;
                if (!reg.test(code)) {
                    return false;
                }
                /*
                		 主体标识码(组织机构代码):使用阿拉伯数字或英文大写字母表示。按照GB 11714编码。
                		 在实行统一社会信用代码之前,以前的组织机构代码证上的组织机构代码由九位字符组成。格式为XXXXXXXX-Y。前面八位被称为“本体代码”;最后一位被称为“校验码”。校验码和本体代码由一个连字号(-)连接起来。以便让人很容易的看出校验码。但是三证合一后,组织机构的九位字符全部被纳入统一社会信用代码的第9位至第17位,其原有组织机构代码上的连字号不带入统一社会信用代码。
                		 原有组织机构代码上的“校验码”的计算规则是:​
                		 例如:某公司的组织机构代码是:59467239-9。那其最后一位的组织机构代码校验码9是如何计算出来的呢?
                		 第一步:取组织机构代码的前八位本体代码为基数。5 9 4 6 7 2 3 9
                		 提示:如果本体代码中含有英文大写字母。则A的基数是10,B的基数是11,C的基数是12,依此类推,直到Z的基数是35。
                		 第二步:​​取加权因子数值。因为组织机构代码的本体代码一共是八位字符。则这八位的加权因子数值从左到右分别是:3、7、9、10、5、8、4、2。​
                		 第三步:本体代码基数与对应位数的因子数值相乘。​
                		 5×3=15,9×7=63,4×9=36,6×10=60,
                		 7×5=35,2×8=16,3×4=12,9×2=18​​
                		 第四步:将乘积求和相加。​
                		 15+63+36+60+35+16+12+18=255
                		 第五步:​将和数除以11,求余数。​​
                		 255÷11=33,余数是2。​​
                	*/
                var firstkey = this.calc(code.substr(8), this.firstarray, this.firstkeys, 11);
                /*
                 第六步:用阿拉伯数字11减去余数,得求校验码的数值。当校验码的数值为10时,校验码用英文大写字母X来表示;当校验码的数值为11时,校验码用0来表示;其余求出的校验码数值就用其本身的阿拉伯数字来表示。​
                 11-2=9,因此此公司完整的组织机构代码为 59467239-9。​​
                */
                var firstword;
                if (firstkey < 10) {
                    firstword = firstkey;
                }
                if (firstkey == 10) {
                    firstword = 'X';
                } else if (firstkey == 11) {
                    firstword = '0';
                }
                if (firstword != code.substr(16, 1)) {
                    return false;
                }

                /*
                		 校验码:使用阿拉伯数字或大写英文字母来表示。校验码的计算方法参照 GB/T 17710。
                		 例如:某公司的统一社会信用代码为91512081MA62K0260E,那其最后一位的校验码E是如何计算出来的呢?
                		 第一步:取统一社会信用代码的前十七位为基数。9 1 5 1 2 0 8 1 21 10 6 2 19 0 2 6 0提示:如果前十七位统一社会信用代码含有英文大写字母(不使用I、O、Z、S、V这五个英文字母)。则英文字母对应的基数分别为:A=10、B=11、C=12、D=13、E=14、F=15、G=16、H=17、J=18、K=19、L=20、M=21、N=22、P=23、Q=24、R=25、T=26、U=27、W=28、X=29、Y=30​
                		 第二步:​​取加权因子数值。因为统一社会信用代码前面前面有十七位字符。则这十七位的加权因子数值从左到右分别是:1、3、9、27、19、26、16、17、20、29、25、13、8、24、10、30、2​8
                		 第三步:基数与对应位数的因子数值相乘。​
                		 9×1=9,1×3=3,5×9=45,1×27=27,2×19=38,0×26=0,8×16=128​
                		 1×17=17,21×20=420,10×29=290,6×25=150,2×13=26,19×8=152​
                		 0×23=0,2×10=20,6×30=180,0×28=0
                		 第四步:将乘积求和相加。​9+3+45+27+38+0+128+17+420+290+150+26+152+0+20+180+0=1495
                		 第五步:​将和数除以31,求余数。​​
                		 1495÷31=48,余数是17。​​
                */

                var secondkey = this.calc(code, this.secondarray, this.secondkeys, 31);
                /*
                 第六步:用阿拉伯数字31减去余数,得求校验码的数值。当校验码的数值为0~9时,就直接用该校验码的数值作为最终的统一社会信用代码的校验码;如果校验码的数值是10~30,则校验码转换为对应的大写英文字母。对应关系为:A=10、B=11、C=12、D=13、E=14、F=15、G=16、H=17、J=18、K=19、L=20、M=21、N=22、P=23、Q=24、R=25、T=26、U=27、W=28、X=29、Y=30
                 因为,31-17=14,所以该公司完整的统一社会信用代码为 91512081MA62K0260E。​​
                */
                var secondword = this.secondarray[secondkey];
                if (!secondword || secondword != code.substr(17, 1)) {
                    return false;
                }
                var word = code.substr(0, 16) + firstword + secondword;
                if (code != word) {
                    return false;
                }
                return true;
            }
            this.calc = function(code, array1, array2, b) {
                var count = 0;
                for (var i = 0; i < array2.length; i++) {
                    var a = code[i];
                    count += array2[i] * array1.indexOf(a);
                }
                var remainder = count % b;
                return remainder === 0 ? 0 : b - remainder;
            }
        }
        return new Tyshyxdm().verify(value);
    }

车牌号

组成:省份简称(1位汉字)+发牌机关代号(1位字母)+序号(6位),总计8个字符,序号不能出现字母I和字母O
通用规则:不区分大小写,第一位:省份简称(1位汉字),第二位:发牌机关代号(1位字母)
序号位:
小型车,第一位:只能用字母D或字母F,第二位:字母或者数字,后四位:必须使用数字
---([DF][A-HJ-NP-Z0-9][0-9]{4})
大型车,前五位:必须使用数字,第六位:只能用字母D或字母F。
----([0-9]{5}[DF])

 /^([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[a-zA-Z](([DF]((?![IO])[a-zA-Z0-9](?![IO]))[0-9]{4})|([0-9]{5}[DF]))|[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})$/

/^ (([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/

车牌号校验正则表达式 车牌号校验规则正则表达式

  1. 常规车牌号:仅容许以汉字开头,后面可录入六个字符,由大写英文字母和阿拉伯数字组成。如:粤B12345;
  2. 最后一个为汉字的车牌:容许以汉字开头,后面可录入六个字符,前五位字符,由大写英文字母和阿拉伯数字组成,而最后一个字符为汉字,汉字包括“挂”、“学”、“警”、“港”、“澳”。如:粤Z1234港。
  3. 新军车牌:以两位为大写英文字母开头,后面以5位阿拉伯数字组成。如:BA12345。
/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/

URL

/^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

IPv4地址

// ipv4地址正则
 
var ipP = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
console.log(ipP.test("115.28.47.26"));//输出 true

十六进制颜色

// RGB Hex颜色正则

var cPattern = /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/;
console.log(cPattern.test("#b8b8b8"));   // 输出 true

日期

//日期正则,简单判定,未做月份及日期的判定
 
var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/; 
console.log(dP1.test("2017-05-11"));  // 输出 true 
console.log(dP1.test("2017-15-11"));  // 输出 true 
 
 // 日期正则
 
 /^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$/


//日期正则,复杂判定
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)$/; 
 
console.log(dP2.test("2017-02-11"));  // 输出 true 
console.log(dP2.test("2017-15-11"));  // 输出 false 
console.log(dP2.test("2017-02-29"));  // 输出 false 

日期时间 yyyy-MM-DD HH:mm:ss

/^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(\s((([0-1][0-9])|(2?[0-3]))\:([0-5]?[0-9])((\s)|(\:([0-5]?[0-9])))))?$/				

QQ号码

//QQ号正则,5至11位
 
var qqPattern = /^[1-9][0-9]{4,10}$/;
console.log(qqPattern.test("65974040")); //输出 true 

微信号码

//微信号正则,6至20位,以字母开头,字母,数字,减号,下划线
 
var wxPattern = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/; 
console.log(wxPattern.test("RuilongMao"));//输出 true 

IP

/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/

MAC地址

/^[A-Fa-f\d]{2}:[A-Fa-f\d]{2}:[A-Fa-f\d]{2}:[A-Fa-f\d]{2}:[A-Fa-f\d]{2}:[A-Fa-f\d]{2}$/