Я получил это регулярное выражение, заменяющее все, кроме последних 4 символов в строке цифр:
'1234567890'.replace(/\d(?=\d{4})/g, 'X'); // "XXXXXX7890"
Однако это работает только для цифр. Я хочу, чтобы он соответствовал любому буквенно-цифровому символу, включая пробелы. Я попытался заменить метасимвол /d на /w (в обоих местах), но это не сработало.
Вы можете помочь?
Обратите внимание, что \ w включает в себя подчеркивание, о котором вы не упомянули о необходимости сопоставления.
Фактически, чтобы соответствовать любому символу, вы можете использовать [^], [\s\S], [\w\W], [\D\d] или . (с модификатором ECMAScript 2018 s). Используйте .replace(/.(?=.{4})/g, 'X')



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы хотите выбрать и / w, и буквальный пробел, поэтому (\w| ). | похож на OR, где вы говорите регулярному выражению выбрать символ слова или пробел.
Используя ваше регулярное выражение, это будет: '1234567890'.replace(/(\w| )(?=(\w| ){4})/g, 'X')
Работает как шарм! Спасибо @naguib
Вы также можете использовать [\ w] вместо (\ w |), поскольку обе стороны чередования представляют одиночные символы.
Вы должны использовать \w
'123HGHJK90'.replace(/[\w ](?=[\w ]{4})/g, 'X');
Это
\dи\w, а не/dили/w.