在js中有可能以这种格式转换字符串
123456789
像这样
*****6789
我只想使用一个语句,像这样,但保留最后四个字符。
var a = "12312312312123".replace(/[0-9]/g, "*")
console.log(a)
答案 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, '*'));