JavaScript

RegExp正则表达式

字数:1587    阅读时间:8min
阅读量:12997

正则表达式也称规则表达式,主要是用来匹配字符串的;它可以在大多数编程语言中使用;是由元字符或者限定符组成的式子;正则表达也被人称为火星文,往往自己写完之后自己都很难看懂,这里介绍一个很好的正则逻辑调试的网站: 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}))$/

野生小园猿
励志做一只遨游在知识海洋里的小白鲨
查看“野生小园猿”的所有文章 →

相关推荐