2019/1.2/正则的理解

1.var reg=/./  var reg=/./

前者代表任何一个字符,后者代表这个字符中得有一个

2.?的使用

如果单独一个字符后面带? var reg=/d?/  /n?/

代表一个或0个字符的出现

如果是量词+和*,{2,}后面带?取消正则的贪婪性  在捕获阶段

3.捕获

  1.普通捕获 exec() macth()

  普通捕获也有懒惰行,给正则添加一个修饰符g 就可以解决,match 是将所有捕获的内容放在一个数组并返回。match就是对exec的一个简单的封装

  2.分组捕获 捕获方法还是exec和match

  正则在结构上发生了变化 ,加()

  var reg=/(a)(b)/

  Exec()和match()在非全局下分组捕获是相同的,在捕获的过程中即捕获大正则里的内容也捕获分组中的内容并都返回

  

  Exec()和match()在全局下分组捕获是不一样的,exec()不变。但是match只捕获大正则里的内容

 3.分组捕获的优势

  A 可以提升优先级

  B 可以捕获引用

  1 代表捕获1里面的内容  2代表分组2里面的内容

  前提是分组必须在引用前面,如果2在分组的前面代表普通的表达式???

  分组的结果存在正则类 RegExp的$number属性下

  1 和RegExp.$1二者都是分组引用

  1 只能使用正则表达式里面,RegExp.$1可以外面使用。都是在捕获完成的条件下。

  4. 在捕获的过程中怎样取消捕获分组中的内容

  在分组的前面加上?:就ok了

  ?:和?=的区别

  ?:取消捕获分组中的内容

  ?=  a(?=s)

  

  5.replace细说

  replace 是字符串的一个方法,他有两个参数,用后者将前者替换掉,并都返回一个新的字符串,但是没有改变原来的字符串。

  1. 如果第一个参数是字符串只改变一次

  2. 如果第二个参数是正则,捕获一次改变一次

  3.如果第二个参数是匿名函数,每捕获一次这个匿名函数就执行一次,return是什么,那就替换成什么,这个匿名函数的arguments有三个元素

  作者:晋飞翔

  QQ/微信同步:318080891

原文地址:https://www.cnblogs.com/jinfeixiang/p/10210873.html