我需要用JavaScript编写解决方案,以将字符串中的所有字符替换为*,但第一个和最后一个字符除外。我对RegEx不太熟悉,但尝试使用以下方法来实现解决方案:
var regex = /\.(?=^)(?!=$)/;
const censored = w.replace(regex)
console.log(censored)
Run Code Online (Sandbox Code Playgroud)
关于如何实现此目标的任何想法?
使用先行的想法是可行的,让我们纠正一些错误:
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)
| 归档时间: |
|
| 查看次数: |
1276 次 |
| 最近记录: |