js正则匹配

/abc/.test(function(){abc;});

这种匹配很奇怪,test(str)函数本来应该传递字符串的,经我测试,我发现如上写法居然也可以,并返回true,换了几种别的测试,总结如下:

{}里只要有abc的存在都可以匹配,只要不是以数字开头都可以,用来匹配属性和方法名挺好使的

replace(regexp/substr,replacement)

重点是第二个参数,它可以是字符串,也可以是函数,replacement中的$有特殊的含义,所以没事别乱写

$1、$2、...、$99与regexp中的第1到第99个子表达式相匹配的文本。

$&与regexp相匹配的子串。

$`位于匹配子串左侧的文本。

$'位于匹配子串右侧的文本。

$$直接量符号。

如果是函数,function($0,$1,$2,$3,...){}一般是这样的形式,然后在函数体中可以用$1获取到第一个匹配段,$0表示匹配的整体,而不是捕获组的,举个例子:

"abc".replace(/(c)/g, function($0, $1){
  return $1.toUpperCase();
})

这样c就会替换成大写了

相关推荐