正则

正则表达式

定义

  • 对字符串进行描述的

作用

  • 表单验证
  • 验证 邮箱/电话/邮编 ....
  • WEB编辑器
  • 爬虫、数据抓取、小偷程序

定义正则表达式

  • 直接量
  • 函数
  • 构造函数

正则表达式基础

原子

  • 正则表达式的最小组成单位
  • 普通的字母、数字、符号 都是原子
  • 转义字符
  • 字符类

字符直接量(原子)

  • 原子的重要组成
  • 普通的字母、数字、符号
  • v
  • f
  •  退格符
  • x00
  • u0000

字符类(原子)

  • d 数字 [0-9]
  • D 除了数字之外的字符 [^0-9]
  • w 数字、字母、下划线 [0-9a-zA-Z_]
  • W 除了数字、字母、下划线 之外的字符 [^0-9a-zA-Z_]
  • s 空白符 [ v f ]
  • S 除了空白符之外的字母 [^ v f ]
  • . 除了换行外所有的字符 [^ ]
  • [...]
  • [^...]
  • [] 匹配退格符

重复(对原子的数量修饰)

  • + 表示前面原子出现1次或多次 {1,}
  • ? 表示前面的原子出现0次或1次 {0,1}
  • * 表示前面的原子出现0次1次或多次 任意次 {0,}
  • {m} 前面的原子出现m次
  • {m,n} 前面的原子出现m到n次
  • {m,} 前面出现的原子个数m次以上
  • 非贪婪的重复(对修饰符的修饰,后面加?)

指定匹配的位置 (对原子位置的修饰) 边界

  •  单词边界
  • B 不是单词边界
  • ^ 字符串开始边界
  • $ 字符串结束边界
  • 先行断言(正向预查) (?=)
  • 负向先行断言(负向预查) (?!)
  • 先行断言和负向先行断言只能匹配后面的

选择修饰符

  • | (逻辑或) /a|b/ 匹配a或者b /abc|def/ 匹配abc 或者def 字符串的结合优先级高于选择 /ab(c|d)ef/ 匹配abcef 或者abdef

模式单元 ()

  • 改变优先级
  • 把多个原子当做一个原子
  • 把模式单元匹配的内容暂存内存 (?:) 可以取消暂存内容
  • 暂存内存的内容可以被反向引用 $1

修饰符(模式修正符)

  • i 正则表达式不区分大小写
  • m 允许多行(换行被当做字符串结束符)
  • g 全局匹配

正则的使用

RegExp对象

  • test() 返回: true/false
  • exec() 返回:数组/null

String对象

  • search() 匹配成功(第一次满足正则的位置) 匹配失败(-1)
  • match() 匹配成功(返回数组 全局匹配影响) 失败(null)
  • replace() 替换
  • split() 把字符串分割为数组 console.log("abc123".search(/d{2}/)); //3 console.log("abc123".search(/^d{2}/)); //-1

    console.log("1abc34io".match(/[a-z]{2}/)); console.log("1abc34io".match(/[a-z]{d}/)); console.log("1abc34io".match(/[a-z]{2}/g)); console.log("1abc34io".match(/[a-z]{9}/g));

原文地址:https://www.cnblogs.com/zgh929/p/7445230.html