替换JavaScript中的中间n个字符

Nom*_*Ali 3 javascript jquery

我有一个电话号码,我想像审查表格一样显示它.例如,我有:+923451234567

我想显示它像: +923*******67

将使用Str.replace函数,但如何:

var str = '+923451234567'
str.replace(i_Dont_Know_What, '*');
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下字符串包含13个字符.我想用"*"替换第5-11个字符

我在某个地方找到了这个,但这不是我想要的.

var str = "name(replace these parenthesis by @)domain.com";
var patt1 = /\(.*@\)/i;
document.write(str.replace(patt1,"@"));
Run Code Online (Sandbox Code Playgroud)

我怎么做到这一点?

Mar*_*ers 8

漂亮而简单的一行替换为子字符串匹配,这里不需要凌乱的正则表达式。

var str = '+923451234567';
console.log(str.replace(str.substring(4,11), "*******"));
Run Code Online (Sandbox Code Playgroud)


Apo*_*olo 6

正则表达式在开头保留 3 个 num 字符,在结尾保留 2 个字符

正则表达式解释:https : //regex101.com/r/xR6pRD/1

var str = '+923451234567'
str = str.replace(/(\+?\d{3})(\d+)(\d{2})/g, function(match, start, middle, end) {
  return start + "*".repeat(middle.length) + end;
});

document.write(str);
Run Code Online (Sandbox Code Playgroud)


epa*_*llo 5

多种方式,一种方式是简单的reg表达

console.log("+923451234567".replace(/(\+\d{3})\d{7}/,"$1*******"))
Run Code Online (Sandbox Code Playgroud)