关于正则表达式test、exec和RegExp.$1
今天看公司封装的js函数时,发现了RegExp.$1这个方法,表示之前从没见过,并且之前的test和exec用法也不是特别了解,就去网上查了一下,总结如下:
test:用的最多的一种了,用于检测是否存在匹配,返回true或false,简单又粗暴
1 /^\d{3}$/.test("123") //true 2 /^\d{3}$/.test("121233") //false
exec:匹配字符串中的第一个相匹配的内容,并返回一个数组,里面包含匹配内容和自匹配的内容
var x = /1[3,5,7,8]([0-9])([0-9]{8})/.exec("13187654321+13212345678") console.log(x); //["13187654321", "1", "87654321", index: 0, input: "13187654321+13212345678"]其中的index属性声明的是匹配的文本。input是被检索的字符串
RegExp.$1: 其实就是指exec返回数组中的下标为1的值,同理有RegExp.$2-RegExp.$9,分别对应下标为2-9中的值
var x = /1[3,5,7,8]([0-9])([0-9]{8})/.exec("13187654321+13212345678"); console.log(RegExp.$1+"-"+RegExp.$2); //1-87654321
我们也可以这样用
"aaabbbccc".replace(/(\w)(\w{2})(\w{3})/,"$1-$2-$3-");//"a-aa-bbb-ccc"

浙公网安备 33010602011771号