【发布时间】:2016-07-20 08:42:52
【问题描述】:
在此示例字符串 '1,2,3,4,5' 中,我试图捕获并替换第三次出现的逗号 , 字符
这段代码在这里
'1,2,3,4,5'.match(/(?:[^,]*,){2}[^,]*(,)/)
匹配 1,2,3 和我正在寻找的逗号
但不确定如何仅替换逗号
'1,2,3,4,5'.replace(/(?:[^,]*,){2}[^,]*(,)/, "$")
替换4之前的所有内容@ 987654327@
我只想要一个字符串结果,例如1,2,3$4,5
我以两种不同的方式完成了这项任务,使用数组拆分和切片以及使用带有回调的 String#replace
//splice
let parts = [];
let str = "1,2,3,4,5";
let formatted = ((parts = str.split(",")).slice(0,3)).join("-") + ' ' + parts.slice(3).join(":")
//callback
let str = "1,2,3,4,5";
str.replace(/,/g, (() => {
let count = 0;
return (match, position) => {
count += 1;
if(count == 3) return ' ';
else if(count < 3) return '-';
else return ':';
});
})())
这甚至可以用普通的String#replace 实现吗?
【问题讨论】:
标签: javascript regex str-replace