正则表达式也称规则表达式,主要是用来匹配字符串的;它可以在大多数编程语言中使用;是由元字符或者限定符组成的式子;正则表达也被人称为火星文,往往自己写完之后自己都很难看懂,这里介绍一个很好的正则逻辑调试的网站: https://regexper.com/
- 正则表达式的创建:
- 实例化RegExp对象:let reg = new RegExp(/匹配规则/);
- 字面量:let reg = /匹配规则/:
- 正则表达式的方法:
- test():reg.test(str);返回的是一个布尔值;
- exec():reg.exec(str);返回的是第一次匹配项的数组;这个方法有index属性,表示匹配到的项的下标,有input属性,表示匹配规则reg的字符串形式
常用的匹配规则
- 元字符
- ".":表示除/n外的任意一个字符;
- "^":以什么开始^[0-9];取反[^0-9];
- "$":以什么结尾
- "g":全局匹配;
- "i":忽略大小写
- "[]":表示范围中的任意一个数;[0-9];[a-z]…
- "|":或;
- "()":分组;提升优先级;(它的分组顺序数左边括号就好);
- 限定符
- "*":表示前边的表达式出现0次或者多次;{0,}
- "+":表示前边的表达式出现1次或者多次;{1,}
- " ?":表示前边的表达式出现0次或者1次;阻止贪婪模式;{0,1}
- "{}":可以更加明确前边表达式出现过多少次;{4};{4,5}
- 字母
- "/d":0-9的数字
- "/D":非数字
- "/s":空白符;
- "/S":非空白符
- "/W":特殊字符
- "/w":非特殊字符(_也是非特殊字符);
- "/b":单词边界
一些常用的正则表达式;
- 表单常用正则
- 中文名:
var chinesNameReg = /^[\u4e00-\u9fa5]{2,6}$/
- 电话号:
var phoneReg = /^1|([5][0-35-9])|([6][6])|([7][35-8])|([8]\d)|([9][89]))\d{8})|((4[0]|([7][0][0-35-9]))\d{7}))$/
- 邮箱:
var emailReg = /^[0-9a-zA-z_.-]+[@][0-9a-zA-z_.-]+([.][a-zA-Z]+){1,2}$/
- 身份证:
var IDReg = /^((1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|71|8[12])\d|8(86|5[23]))\d{3}(19\d{2}|20(0\d|1[0-6]))((0[13578]|1[02])(0[1-9]|[12]\d|3[01])|(0[469]|11)(0[1-9]|[12]\d|30)|02(0[1-9]|[12]\d))\d{3}[\dxX]$/
- 密码:
- 获取6~8位密码:
var password = /^(\d|[a-zA-Z]|\W){6,8}$/
- 6~8位纯数字或者纯字母或者纯特殊字符密码:
var password = /^([0-9]{6,8}|[a-zA-Z]{6,8}|\W{6,8})$/
- 必须包含数字和字母还有特殊字符的密码:
var password = /(\d+(([a-zA-Z]+\W+)|(\W+[a-zA-Z]+))|[a-zA-Z]+((\d+\W+)|(\W+\d+))|\W+(([a-zA-Z]+\d+)|(\d+[a-zA-Z]+)))/
- 运营商正则
- 移动:
var mobile = /^1)|([7][8])|(8))\d{8})|(([7][0][356])\d{7}))$/
- 联通:
var unicom = /^1|([5][56])|([7][56])|([8][56]))\d{8})|(([7][0][4789])\d{7}))$/
- 电信:
var telecom = /^1|([5][3])|([7][37])|([8][019]))\d{8})|(([7][0][0-2])\d{7}))$/