正则表达式-检测并替换字符串中超过两位的数字

时间:2018-10-19 01:13:52

标签: javascript regex

当一个字符串中的位数超过两位时,我只想替换它们。示例:

允许:

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 ***

非常感谢您!

1 个答案:

答案 0 :(得分:3)

一种解决方案是将回调函数传递给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"