Как заменить символы и сохранить длину строки? - PullRequest
2 голосов
/ 14 марта 2019

Возможно в js преобразовать строку в этот формат

123456789

Примерно так

*****6789

Я хочу использовать только один символ, что-то вроде этого, но оставляя последние четыре символа.

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

Ответы [ 5 ]

6 голосов
/ 14 марта 2019

вы можете использовать .(?=.{4}) с флагом g:

var a = "12312312312123".replace(/.(?=.{4})/g, '*')
console.log(a)
0 голосов
/ 14 марта 2019

Немного другой подход ... путем создания двух групп захвата и замены первой на *.

const a = '123456789'.replace(/(^\d+)(\d{4}$)/, (m,g1,g2) => '*'.repeat(g1.length) + g2);
console.log(a);
0 голосов
/ 14 марта 2019

Использовать padStart

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

Или

const str = '123456789';
console.log(str.substr(-4).padStart(str.length, '*'));
0 голосов
/ 14 марта 2019

Вы можете использовать функцию slice или функцию substr и функцию padStart для заполнения * слева направо.

let str = "1234567893232323232";
console.log(str.slice(5, str.length).padStart(str.length, '*'));
0 голосов
/ 14 марта 2019

Разделите ввод на подстроки, выполните замену первой части, а затем добавьте вторую часть.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...