表单验证常用正则表达式

一 建立正则表达式方法:

1.使用RegExp()构造函数来创建对象

var reg = new RegExp(s$);

2.直接量语法创建,包含在一对斜杠//之间

var reg = /s$/

二 常用正则表达式

1.用户名正则表达式

//4到16位(字母、数字、下划线、减号)
var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
console.log(uPattern.test("caibiao"));  //输出true

2.密码强度正则

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

3.整数正则

//正整数
var posPattern = /^\d+$/
//负整数
var negPattern = /^-\d$/
//整数正则
var intPattern = /^-?\d+$/

4.数字正则(整数+浮点数)

//正数正则
var posPattern = /^\d*\.?\d+$/;
//负数正则
var negPattern = /^-\d*\.?\d+$/;
//数字正则
var numPattern =/^-?\d*\.?\d+$/;

5.Email正则

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

6.手机号码正则

var telPattern = /^1[34578]\d{9}$/

7.身份证正则(18位)

var IDpattern = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/

(1)前1、2位数字表示:所在省份的代码;

(2)第3、4位数字表示:所在城市的代码;

(3)第5、6位数字表示:所在区县的代码;

(4)第7~14位数字表示:出生年、月、日;

(5)第15、16位数字表示:所在地的派出所的代码;

(6)第17位数字表示性别:奇数表示男性,偶数表示女性;

(7)第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生, 用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示。

8.url正则

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

9 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]?) $/

32比特的IP地址划分为两个部分:一部分用来标识网络,称为Network ID,NID;另一部分用来表示网络中的主机,Host ID,HID。TCP/IP协议规定, 两台联网的主机想直接通讯的话,必须有相同的NID和不同的HID。不同NID的两台主机要想通讯的话必须通过一台中间设备 - 路由器的转发才能实现。  IPv4中定义了5类IP地址,即:A、B、C、D、E类地址。不同类别的IP地址对NID及HID范围的规定是不同的,用于匹配不同规模的网络。

##A class IP  A类地址的特点是第1个二进制8位组来标识NID,且该8位组最高位为0。剩余的24位二进制位代表HID。另外网络号全为0的地址不能使用,而前8位为01111111的IP地址,用于网络软件测试和本机进程间通信,称为回送地址。A类NID一共有126个。每个A类网络可以容纳2**24-2=16777214台主机(IPv4中规定主机号的各位不能全为0或全为1)。 因此A类IP地址范围是:1.x.y.z-126.x.y.z,其中x、y、z的各个二进制位不能全为0或全为1。   

##B class IP   B类地址的特点是第1、2个8位组共16位二进制数用来标识NID,且第最高两位二进制数为10。剩余的16位二进制数代表HID。一共可以有214=16384个B类网络。同时,每个B类网络可以容纳216-2=65534台主机。   B类IP地址范围是:128.0.y.z-191.255.y.z,其中y、z的各个二进制位不能全为0或全为1。   

##C class IP   C类地址的特点是第1、2、3个8位组共24位二进制数用来标识NID,且最高三位二进制数为110,剩余的8位二进制位代表HID。 一共可以有221=2097152个C类网络。每个C类网络可以容纳28-2=254台主机。   C类IP地址范围是:192.0.0.z-223.255.255.z,其中z的各个二进制位不能全为0或全为1。   

##D class IP (for Multicast)  D类地址的第1个二进制8位组最高位4位为1110。因此,第1个8位组的取值范围是224~239。D类地址属于比较特殊的IP地址类,它不区分NID和HID,也不能分配给具体的主机。     D类地址主要用于多播(multi-casting),用于向特定的一组(多台)主机发送广播消息。在RIPv2和OSPF动态路由协议中采用多播方式在一组路由器间传送和路由相关的信息。   

##E class IP (for Reservation)    E类地址的第1个二进制8位组最高位5位为11110。因此,第1个8位组的取值范围是240~247。E类地址被保留作为实验用。   

##其他     对于第1个二进制8位组取值范围在248~254之间的IP地址保留不用。

10.十六进制颜色正则

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

11.日期

//日期正则,简单判定,未做月份及日期的判定
var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;
//输出 true
console.log(dP1.test("2017-05-11"));
//输出 true
console.log(dP1.test("2017-15-11"));
//日期正则,复杂判定
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"));

12.QQ号码正则

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

13.微信号正则

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

14.车牌号色正则

//车牌号正则
var cPattern = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
//输出 true
console.log(cPattern.test("粤B39006"));

15.包含中文正则 ``` //包含中文正则 var cnPattern = /[\u4E00-\u9FA5]/; //输出 true console.log(cnPattern.test("蔡宝坚")); ···

JSRUN notes