正则表达式

最后更新于:2018-06-19 20:11:46

基础概念

正则表达式是用来处理字符串的,对于复杂字符串的处理,正则能发挥巨大的作用。 正则是一种字符串的匹配模式,可以验证字符串是否符合这个模式,也可以把符合模式的字符串捕获出来。

定义正则

// 字面量方式创建
let reg = / ... /g;
// 实例方式创建
let reg = new RegExp('...','g');

字面量和实例创建方式的区别:

  • 字面量方式中出现的所有都是元字符,所以不能进行变量的拼接,而实例创建的方式可以。
  • 在实例创建方式中,部分元字符需要转义。

元字符和含义

  • 特殊元字符
    • \ 转义字符(把有意义和没意义的字符来回转)
    • . 除了\n以外的任意字符
    • \n 换行符
    • ^ 以xxx开始
    • $ 以xxx结束
    • \d 匹配0-9之间的任意数字 \D:除了0-9之间数字的任意字符
    • \b 匹配一个边界
    • \w 匹配数字、字母、下划线中的任意字符
    • \s 匹配一个空白字符
    • [xyz] x或者y或者z中的一个,例如:[abcd]四个字母中的任意一个
    • [^xyz] 除了三个以外的任意字符
    • [a-z] 匹配a-z中的任意字符
    • [^a-z] 匹配除了a-z中的任意字符
    • x|y 匹配x或者y中的任意一个
    • () 分组
    • ?: 只匹配不捕获
    • ?= 正向预查
    • ?! 负向预查 两个预查也起到了只匹配不捕获的作用
    • ...
  • 限定符
    • (*) 出现零次或者多次
    • ? 出现零次或者一次
    • (+) 出现一次或者多次
    • {n} 出现n次
    • {n,} 出现n到多次
    • {n,m} 出现n到m次
  • 普通元字符:代表本身意思的元字符

正则的修饰符

  • i:ignoreCase 忽略大小写
  • m:multiline 匹配换行
  • g:global 全局匹配
  • u:Unicode模式
  • y:粘连”修饰符。

两个方法

  • test
  • exec

运算符的优先级

enter image description here