const regex = /(?<=(?:[^\d]|^))(\d{4}[ \t])(?:\d{4}[ \t]){2}(\d{4})(?=(?:[^\d]|$))/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?<=(?:[^\\d]|^))(\\d{4}[ \\t])(?:\\d{4}[ \\t]){2}(\\d{4})(?=(?:[^\\d]|$))', 'gm')
const str = `1234 1234 1234 1234
1234 5678 9101 1121
1234 84848 5454 4888
1111 2222 5555 4444
1111 2222 5555 44444
11111 2222 5555 4444
asa1111 2222 5555 4444dasda
Вчера вечером со счета номер 4301 0234 2145 2140 был совершен перевод на счет 5042 2012 0532 2043 в размере \${payment_amount} рублей
`;
const subst = `$1 **** **** $2`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions