假设我有一个字符串
var unmasked = 'AwesomeFatGorilla'
我想要做的是从最后掩盖字符串的50%+。
var masked = unmasked.replace( //REGEX//, '•')
更换后,屏蔽的字符串应如下所示:
AwesomeF•••••••••
由于我的未屏蔽字符串中有17个字母,因此最后9个字母被屏蔽。有没有适用于此的正则表达式?
答案 0 :(得分:3)
这是一个简单的替代方案,没有正则表达式:
var unmasked = 'AwesomeFatGorilla'
var masked = unmasked.slice(0, Math.floor(unmasked.length) / 2) + "•".repeat(Math.ceil(unmasked.length / 2));
console.log(masked)

您必须调整奇数长度的数学感谢下面的Rhyono comment,我使用Math.floor()
和Math.ceil()
来获取您的行为想要奇怪的长度。
答案 1 :(得分:1)
使用正则表达式.(?!.{n})
:
var unmasked = 'AwesomeFatGorilla'
var num = Math.ceil(unmasked.length / 2)
console.log(unmasked.replace(new RegExp(".(?!.{" + num + "})", "g"), "•"))