js高级正则式

285 阅读1分钟

贪婪和非贪婪

默认是贪婪的,如/a+/则会尽可能多的匹配a,如果想要尽可能少的匹配,则需要加?,即/a+?/

子表达式与反向引用

  1. $1$2匹配子表达式,$&全匹配的字符串
  2. \1反向引用,引用在正则表达式中,如^(\d)\1$即跟^(\d)\d$一样,一个很经典的使用是在匹配html节点,如<(\w+).*>.*</\1>
  3. ?:表示不缓冲子表达式,如(?:\d+)(\s+),则$1代表的是(\s+)

正向预查与负向预查

  1. ?=正向预查,表示需要匹配的才能算匹配上的,如\B(?=\d{3})\B,即需要匹配到非
  2. ?!负向预查,表示需要不匹配的才能算匹配上的,