replace
replace方法对string进行查找和替换,并返回一个新字符串
string.replace(regexp/substr, replacement)
regexp/substr:必需。规定子字符串或要替换的模式的 RegExp 对象。
replacement:必需。一个字符串值。规定了替换文本或生成替换文本的函数。
replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用给定的字符来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
例如:
把所有的l变成大写的
var str="hello world"
console.log(str.replace(/l/,"L"))
看图可以看到只有第一个l 变成了L 这就是没有加上全局标志g
下面是加上g后的效果
var str="hello world"
console.log(str.replace(/l/g,"L"))
加上g后所有匹配的都变成了大写的。
在正则的语法中有一个分组那就是利用小括号()
而在replace()方法中可以抓捕到这些分组
字符 | 替换文本 |
---|---|
$1、$2、…、$99 | 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。 |
$& | 与 regexp 相匹配的子串。 |
$` | 位于匹配子串左侧的文本。 |
$’ | 位于匹配子串右侧的文本。 |
$$ | 直接量符号。 |
利用该方法
字符串进行去重
var str = "aaaddddfffgggghhhhhh";
console.log(str.replace(/(\w)\1+/g,"$1"))
当第二个参数是函数时候 那替换起来会更加灵活,
函数种的参数
第一个参数,是匹配到的子串
第二个或者第三个到后面的 都是匹配分组的子串
在分组后面的就是下标
在下标后面的就是被匹配的字符串
var str="hello hello! "
str.replace(/(l)\1(o)/g,function(regstr,$1,$2,index,str){
console.log(regstr,$1,$2,index,str);
})
利用函数把 “my-student-soun”;变成小驼峰的形式:
var str = "my-student-soun";
console.log(str.replace(/-(\w)/g,function(str,$1){
return $1.toUpperCase();
}))