如何替换字符并保持字符串长度?

时间:2019-03-14 00:02:41

标签: javascript regex

在js中有可能以这种格式转换字符串

123456789

像这样

*****6789

我只想使用一个语句,像这样,但保留最后四个字符。

var a = "12312312312123".replace(/[0-9]/g, "*")
console.log(a)

5 个答案:

答案 0 :(得分:6)

您可以使用带有.(?=.{4})标志的g

var a = "12312312312123".replace(/.(?=.{4})/g, '*')
console.log(a)

答案 1 :(得分:0)

将输入拆分为子字符串,在第一部分进行替换,然后附加第二部分。

var input = "123-456-7890";
var prefix = input.substr(0, input.length - 4);
var suffix = input.substr(-4);
var masked = prefix.replace(/\d/g, '*');
var a = masked + suffix;
console.log(a)

答案 2 :(得分:0)

使用padStart

const str = '123456789';
console.log(str.slice(-4).padStart(str.length, '*'));

const str = '123456789';
console.log(str.substr(-4).padStart(str.length, '*'));

答案 3 :(得分:0)

一种略有不同的方法...通过创建两个捕获组并将第一个捕获组替换为重复的*

const a = '123456789'.replace(/(^\d+)(\d{4}$)/, (m,g1,g2) => '*'.repeat(g1.length) + g2);
console.log(a);

答案 4 :(得分:-1)

您可以使用函数slice或函数substr和函数padStart从左到右填充*

let str = "1234567893232323232";
console.log(str.slice(5, str.length).padStart(str.length, '*'));