我希望从HTML输入框输入一个只有数字的字符串,但是我正在寻找一个正则表达式,以便可以捕获字符串的一部分并将其替换为某些内容,现在我想要的是,对于下一次迭代,正则表达式应该跳过其中的一部分已处理。
看看我的正则表达式
string.replace(/([\d]{10})/gm, "$1,")
预期的迭代结果
source
more data is coming
但是问题是结果
答案 0 :(得分:3)
如果我理解正确,那么您想像string.replace(\regex\, '$1,').replace(\regex\, '$1,').replace(\regex\, '$1,')
一样递归地对一个数字字符串应用regex-replace,但是忽略了已替换的部分。
以下是一种使用负向超前的解决方案。
let test = '895645784578457845784578457845' //org string
let test1 = test.replace(/(\d{10}(?!\,))/gm, "$1,")
.replace(/(\d{10}(?!\,))/gm, "$1,")
.replace(/(\d{10}(?!\,))/gm, "$1,")
// simulate recurse-replace three times
console.log(test1)
test1 += '1234567890123' //new string came
let test2 = test1.replace(/(\d{10}(?!\,))/gm, "$1,")
console.log(test2)
test2 += '1234567890123' //new string came
let test3 = test2.replace(/(\d{10}(?!\,))/gm, "$1,")
console.log(test3)