如何使用JavaScript替换字符串中除第一个和最后一个字符以外的所有字符

kai*_*ait 0 javascript regex

我需要用JavaScript编写解决方案,以将字符串中的所有字符替换为*,但第一个和最后一个字符除外。我对RegEx不太熟悉,但尝试使用以下方法来实现解决方案:

var regex = /\.(?=^)(?!=$)/;
    const censored = w.replace(regex)
    console.log(censored)
Run Code Online (Sandbox Code Playgroud)

关于如何实现此目标的任何想法?

geo*_*org 5

使用先行的想法是可行的,让我们纠正一些错误:

var regex = /(?<!^).(?!$)/g;
var w = 'fork'
var censored = w.replace(regex, '*')

console.log(censored)
Run Code Online (Sandbox Code Playgroud)

但是请注意,后向(?<=?<!)来自ES 2018,尚不受普遍支持。(正如另一个答案中指出的那样,您实际上不需要在此处进行先行查找,先行查找(?!^)也可以这样做)。til ...

您也可以切掉第一个字符并替换其余字符:

var w = 'fork'
var censored = w[0] + w.slice(1).replace(/.(?!$)/g, '*')

console.log(censored)
Run Code Online (Sandbox Code Playgroud)

最后,这是一种完全不需要任何正则表达式的方法:

var w = 'fork'
var censored = w[0] + '*'.repeat(w.length - 1) + w.slice(-1)

console.log(censored)
Run Code Online (Sandbox Code Playgroud)