Вы можете использовать это регулярное выражение:
/(\d)(\d{3})$/
, оно будет соответствовать и сгруппировать первые di git \d
и сгруппировать последние три \d{3}
, которые затем будут сгруппированы в их собственную группу. Используя сопоставленные группы, вы можете ссылаться на них в замещающей строке, используя $1
и $2
.
См. Пример ниже:
const transform = str => str.replace(/(\d)(\d{3})$/, '$1@$2');
console.log(transform("2222")); // 2@222
console.log(transform("333333")); // 333@333
console.log(transform("12345")); // 12@345
console.log(transform("111")); // 111
Для больших строк размером N вы можете использовать другие методы, такие как .match()
, и обратить строку следующим образом:
const reverse = str => Array.from(str).reverse().join('');
const transform = str => {
return reverse(reverse(str).match(/(\d{1,3})/g).join('@'));
}
console.log(transform("2222")); // 2@222
console.log(transform("333333")); // 333@333
console.log(transform("12345")); // 12@345
console.log(transform("111")); // 111
console.log(transform("123456789")); // 123@456@789
console.log(transform("12345678")); // 12@345@678