利用正则表达式中的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