js正则表达式匹配分组和替换分组


js正则表达式的基础知识,这里就不赘述了。

可以参考菜鸟教程:https://www.runoob.com/js/js-regexp.html

这里主要记录,实际应用中,如何匹配分组,以及如何捕获分组匹配到的内容。

匹配分组

方式一

js中创建正则表达式方式一:/正则表达式主体/可选修饰符

正则表达式主体中,被小括号()包裹的部分就是一个分组。

RegExp.${n}会暂存最近一次执行正则匹配,匹配到的第n(n>=1)个分组。

例如:

var reg = /data(\d+)/;
console.log(reg.test('data123'));//输出:true
console.log(RegExp.$1);//输出:123

RegExp.$1记录了,匹配到的data后面跟随的至少含有1位数字的分组,匹配结果是"123"。

方式二

js创建正则表达式方式二:RegExp(str)构造函数

这种情况,入参字符串str中的'\'字符需要被转义,即是说连续两个'\'才表示正则表达式中的一个'\'

例如,下面的reg1reg2等价:

var reg1 = /data(\d+)/;
var reg2 = new RegExp('data(\\d+)');

采用RegExp匹配分组的示例:

var mode = RegExp('data\\((\\d+)\\)\\.txt');
var match = 'data(16).txt'.match(mode);
if(match) {
    // 匹配到的整个字符串
    console.log(match[0]);//输出:data(16).txt
    // 匹配到的第一个分组内容,会同时填充到RegExp.$1
    console.log(match[1]);// 输出:16
}
console.log(RegExp.$1);// 输出:16

替换分组

String.replace(oldValue, newValue)支持oldValue传入一个正则表达式,并且这种情况下newValue中,可以直接用$1,$2,$3等来指代匹配到的分组内容。

var x = '2025-01-13'.replace(/(\d+)-(\d+)-(\d+)/, '$1/$2/$3');
console.log(x);//输出:2025/01/13

当然,如果newValue中想保留住$符号本身,就得转义一下,用$$

var x = '2025-01-13'.replace(new RegExp('(\\d+)-(\\d+)-(\\d+)'), '$1/$2/$$3');
console.log(x);//输出:2025/01/$3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值