我需要在JavaScript中编写一个解决方案,将字符串中的所有字符替换为 *,除了第一个和最后一个字符。我对RegEx不是很熟悉,但尝试使用以下代码来实现该解决方案:
var regex = /\.(?=^)(?!=$)/;
const censored = w.replace(regex)
console.log(censored)
你知道我该怎么做吗?
我需要在JavaScript中编写一个解决方案,将字符串中的所有字符替换为 *,除了第一个和最后一个字符。我对RegEx不是很熟悉,但尝试使用以下代码来实现该解决方案:
var regex = /\.(?=^)(?!=$)/;
const censored = w.replace(regex)
console.log(censored)
你知道我该怎么做吗?
6条答案
按热度按时间bksxznpy1#
使用lookaheads的想法是可行的,让我们纠正几个错误:
但是,请注意,lookbehind(
?<=
和?<!
)来自ES 2018,尚未得到普遍支持。(正如另一个答案所指出的,您实际上不需要lookbehind,lookahead(?!^)
也可以)。你也可以把第一个字符切掉,然后替换掉剩下的字符:
最后,这里有一种方法,可以在不使用任何正则表达式的情况下实现这一点:
r8xiu3jd2#
下面是一个不使用正则表达式的方法:
vshtjzan3#
使用符合ECMAScript 5的正则表达式模式非常容易:
(?!^)
-负前瞻:匹配不是字符串开始位置的位置[\s\S]
-任何字符(甚至是换行符)(?!$)
-负前瞻:匹配不是字符串结束位置的位置请参见regex demo。
0pizxfdo4#
您可以使用replace回调作为第二个参数来替换这些项,如下所示:
x9ybnkn65#
如果不需要正则表达式,这里有一个解决方案。
zc0qhyus6#
您也可以使用以下代码:
其中
?<=
是正后视,?=
是正前视