无法获取所有可能重叠的正则表达式匹配项

Cannot get all possible overlapping regular expression matches

本文关键字:正则表达式 重叠 获取 有可能      更新时间:2023-09-26

我有字符串

Started: 11.11.2014 11:19:28.376<br/>Ended: 1.1.4<br/>1:9:8.378<br/>Request took: 0:0:0.2

我需要加零,以防遇到1:1:8,应该是01:01:08,日期也是如此。我试过使用

/((:|'.|'s)[0-9](:|'.))/g

但它并没有给出所有可能的重叠匹配。如何修复?

var str = "Started: 11.11.2014 11:19:28.376<br/>Ended: 11.11.2014<br/>11:19:28.378<br/>Request took: 0:0:0.2";
var re = /((:|'.|'s)[0-9](:|'.))/g
while ((match = re.exec(str)) != null) {
    //alert("match found at " + match.index);
    str =  [str.slice(0,match.index), '0', str.slice(match.index+1,str.length)];

}
        alert(str);

这可能会达到您想要的效果:

str.replace(/'b'd'b/g, "0$&")

它搜索单独的数字'd和前面的焊盘0

第一个字边界'b检查前面没有[a-zA-Z0-9_],第二个检查数字后面没有[a-zA-Z0-9_]

替换字符串中的$&表示整个匹配。


如果您想填充0,只要前后字符不是数字:

str.replace(/(^|'D)('d)(?!'d)/g, "$10$2")