Идея использования lookaheads жизнеспособна, давайте исправим несколько ошибок:
var regex = /(?<!^).(?!$)/g;
var w = 'fork'
var censored = w.replace(regex, '*')
console.log(censored)
Обратите внимание, однако, что lookbehinds (?<=
и ?<!
) взяты из ES 2018 и пока не поддерживаются повсеместно.(Как указывалось в другом ответе, вам здесь на самом деле не нужен взгляд сзади, подойдет и прогноз (?!^)
).Стиль ...
Вы также можете отрубить первый символ и заменить остальных:
var w = 'fork'
var censored = w[0] + w.slice(1).replace(/.(?!$)/g, '*')
console.log(censored)
Наконец, вот способ сделать это без каких-либо регулярных выражений:
var w = 'fork'
var censored = w[0] + '*'.repeat(w.length - 1) + w.slice(-1)
console.log(censored)