一旦字符串中的数字超过两位,我只想替换它们的数字。示例:
允许:
bla 22 bla bla
应该更换:
bla 234 bla 8493020348 bla
至
bla *** bla ********** bla
确切的数字并不重要 - 只需显示 1-2 位数字,如果多于 2 位,则应将其替换。
这是我已经尝试过的,但它总是替换整个字符串,而不仅仅是数字......此外,如果接受 2 位数字,稍后还有第三个数字,它也会被触发......
var regex = /^(?:\D*\d){3}/g;
str = str.replace(regex, "**");
所以这行不通:
bla 12 and so on 123
它将变成:
**
但我希望它是这样的:
bla 12 and so on ***
提前非常感谢您!!
最佳答案
一种解决方案是将回调函数传递给 String.prototype.replace()
并使用String.prototype.repeat()
输入正确数量的星号:
string = string.replace(/\d{3,}/g, (v) => '*'.repeat(v.length));
完整片段:
const string = 'bla 22 bla 234 bla 8493020348 bla';
const result = string.replace(/\d{3,}/g, (v) => '*'.repeat(v.length));
console.log(result); // "bla 22 bla *** bla ********** bla"
关于javascript - 正则表达式 - 检测并替换字符串中两个以上的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52884594/