js 正则中 replace() 使用

本文详细介绍了JavaScript中replace()方法的用法,包括如何替换字符串和正则表达式的匹配内容。通过实例展示了如何利用$1,$2...$99, $&, $`和$'来构造替换字符串,并探讨了当第二个参数为函数时如何进行复杂替换。此外,还给出了将字符串'2+3=5'转换为'2+3=2+3=5=5'的具体步骤。replace()方法在字符串处理中的灵活性得到了充分展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、replace() 是什么?

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串;
replace方法可以接受两个参数:第一个参数可以使RegExp对象或者一个字符串,第二个参数可以是一个字符串或者一个函数。如果第一个参数是字符串,那么只会替换第一个字符串。如果想替换所有的字符串,则必须使用正则表达式。

1.1.当第二个参数是字符串时,字符有特殊的含义:

$1,$2,...,$99 匹配第1~99个分组里捕获的文本
$& 匹配到的子串文本
$` 匹配到的子串的左边文本
$' 匹配到的子串的右边文本
$$ 美元符号

例如,把 “2,3,5”,变成 “5=2+3”:

var result = "2,3,5".replace(/(\d+),(\d+),(\d+)/,"$3=$1+$2");
console.log(result);
// 5=2+3

又例如,把 “2,3,5”,变成 “222,333,555”:

var result = "2,3,5".replace(/(\d+)/g,"$&$&$&");
console.log(result);
// 222,333,555

再例如,把 “2+3=5”,变成 “2+3=2+3=5=5”:

var result = "2+3=5".replace(/=/,"$&$`$&$'$&");
console.log(result);
// 2+3=2+3=5=5

我们对最后这个进行一下说明。要把 "2+3=5",变成 "2+3=2+3=5=5",其实就是想办法把 = 替换成
=2+3=5=,其中,$& 匹配的是 =, $` 匹配的是 2+3,$' 匹配的是 5。因此使用 "$&$`$&$'$&" 便达成了目的。

1.2.当第二个参数是函数时

第二个参数是一个函数。函数拥的参数:第一个参数是匹配到的字符串,倒数第二个参数是匹配的位置,最后一个个参数是原字符串。在函数里面可以对字符串进行操作。使用函数作为第二个参数,可以做一些复杂的替换,比如当匹配多个字符时候,可以对不同的字符做不同的替换。

例如,把 “hello world”,变成 “hebba warbd”:

var str="hello world";
var str1=str.replace(/[ol]/g,function(match,index,input){
    console.log(index);
    if(match=="o"){
        return "a";
    }
    else {
        return "b";
    }
});
console.log(str1);//hebba warbd

在例如,引入特殊字符:

"1234 2345 3456".replace(/(\d)\d{2}(\d)/g,function(match,$1,$2,index,input){
	console.log([match,$1,$2,index,input]);
})
//   ['1234', '1', '4', 0, '1234 2345 3456']
//   ['2345', '2', '5', 5, '1234 2345 3456']
//   ['3456', '3', '6', 10, '1234 2345 3456']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值