正则表达式

luofuIT成长记录 2020-01-08

创建正则表达式:

  字面量创建: var reg = /a/g;

  构造函数创建: var reg = new RegExp("a","g");

修饰符:

  i :  不区分大小写   g:  全局 从头查找   m:  多行匹配

正则方法:

  test(): 判断是否满足正则,不满足返回false

  exec(): 查找字符串是否满足正则,返回 一个数组,这个数组只有一个元素,包括几个属性:分别是群组,索引,字符串自身

字符串中的方法:

  replace() :  第一个参数为正则,第二个可以是字符串,也可是函数。将正则匹配的内容替换后面一个参数的内容

  mach():  参数为正则,返回匹配正则的数组,没有为null,如果有群组,但是不加全局,则会会返回找到的元素外,还会返回群组的元素

  search(): 返回第一个匹配项的索引,没有返回-1

  splict(): 第一个参数可以是字符串,也可以是正则 第二个参数可选,匹配个数

元字符:

  .    :  可以匹配任意一个字符

  ^  : 在  [  ]  中第一位使用^,表示^除了后面所有的字符都满足,不是第一位表示字符^

  \w : [a-zA-Z0-9_]

  \W : [^a-zA-Z0-9_]

  \s  : 空白字符(空格)

  \S  : 非空白字符

  \n  : 换行

  \r   : 回车

 

重复: 

 {n,m} :贪婪匹配,先匹配最大的

 {0}  :表示空字符 

 ? : {0,1}

  +  : {1,}

  *  :  {0,}

  /  a {2,5} ?  /        在匹配后面加? 表示非贪婪匹配 例如 .+?  或者 .*?

起始、结束:

^$  

群组:

var str="18617891076".match(/(\d{3})(\d{4})(\d{4})/).slice(1).reduce(function(value,item,index){

            return index===1 ? value+"****" : value+item;

        })

可以简写为:

var str="18617891076".replace(/(\d{3})(\d{4})(\d{4})/,"$1****$3");
        console.log(str);

断言:

?<=  前置等于  ?<! 前置不等于    ?= 后置等于  ?! 后置不等于

相关推荐

jyj00 / 0评论 2020-01-29