Как заменить произвольное количество предшествующих символов в строке постоянными 4 звездочками, исключая последние 3? - PullRequest
0 голосов
/ 05 августа 2020

Результат должен быть примерно таким:

console.log(mask('12345')) // **** 345
console.log(mask('12345 6 789')) // **** 789
console.log(mask('1234 5678 9101 1213')) // **** 213

Я пробовал что-то вроде

const mask = (string) => `**** ${string.slice(-3)}`

Но мне интересно, есть ли лучший подход с регулярным выражением / replace?

Ответы [ 3 ]

1 голос
/ 05 августа 2020

На мой взгляд, ваш нынешний подход вполне читаем. Но если вы хотите использовать регулярное выражение, одним из способов может быть использование .replace() для замены всех символов в вашей строке, а также группировка последних трех с использованием /.+(.{3})$/. Затем вы можете использовать группу в строке замены, обратившись к $1:

const mask = string => string.replace(/.+(.{3})$/, "**** $1");
console.log(mask('12345')) // **** 345
console.log(mask('12345 6 789')) // **** 789
console.log(mask('1234 5678 9101 1213')) // **** 213

Регулярное выражение:

  • .+: соответствует любому символу (одному или нескольким)
  • (.{3})$: Группа последние три произвольных символа. На эту захваченную группу можно ссылаться, используя $1 в строке замены.
1 голос
/ 05 августа 2020

Вы можете использовать регулярное выражение, чтобы получить только последние 3 числа

mask = (n) => "**** " + n.match(/(\d{3})$/)[0];
console.log(mask("12345")); // **** 345
console.log(mask("12345 6 789")); // **** 789
console.log(mask("1234 5678 9101 1213")); // **** 213

Если ваши числа могут быть меньше 3 по длине, вы можете использовать это вместо

mask = (n) => n.replace(/(.+)(?=(\d){3}$)/g, "****");
if (mask.length != 0) console.log(mask("12345")); // **** 345
console.log(mask("12345 6 789")); // **** 789
console.log(mask("1234 5678 9101 1213")); // **** 213
0 голосов
/ 05 августа 2020

Можете попробовать

var mask = "12345"; //Your characteres to mask
var lastthree = mask.substr(mask.length - 3);
var final = "**** "+lastthree;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...