字符串的全局匹配

利用正则表达式中的g修饰符允许多次匹配的特点,实现一个可以对字符串进行全局匹配的工具函数


/**
* 对字符串的全局匹配
* @param str String 待匹配的字符串
* @param reg String 正则表达式,匹配规则
* @return 所有匹配结果
*/ 

function globalMatch(str, reg) {
    if(!/g$/.test(reg)){
        debugger
        reg = new RegExp(reg, 'g');
    }
    while(true) {
        let matchRes = reg.exec(str);
        if(!matchRes) break;
        console.log(`#${matchRes.index}: ${matchRes[0]}`);
    }
}

测试:

// test1
let s1 = '_a123a_456_a789',
    reg1 = /a/g;
globalMatch(s1, reg1); 

// 返回结果:
#1: a
#5: a
#11: a
// test2
let s2 = '_a123a_456_a789',
    reg2 = /a/;
globalMatch(s2, reg2); 

// 返回结果:
#1: a
#5: a
#11: a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值