我有一个电话号码,我希望将其显示为审查形式。例如,我有:+923451234567
我希望将其显示为:+923*******67
Str.replace 功能,但如何:
var str = '+923451234567'
str.replace(i_Dont_Know_What, '*');
所以在这种情况下,字符串包含13个字符。我想用"替换第5-11个字符。 *"
我在某个地方找到了这个,但这不是我想要的。
var str = "name(replace these parenthesis by @)domain.com";
var patt1 = /\(.*@\)/i;
document.write(str.replace(patt1,"@"));
我将如何实现这一目标?
答案 0 :(得分:5)
多种方式,一种方式是简单的reg表达
console.log("+923451234567".replace(/(\+\d{3})\d{7}/,"$1*******"))
答案 1 :(得分:4)
简单的一行代替子字符串匹配,这里不需要凌乱的正则表达式。
Install-Package Microsoft.AspnNet.Razor -v 3.2.2
答案 2 :(得分:3)
正则表达式在开头保留3个数字字符,在结尾处保留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);

答案 3 :(得分:1)
您可以通过给出长度并使用偏移量来移动替换字符来使用动态方法。
function replaceMiddle(string, n) {
var rest = string.length - n;
return string.slice(0, Math.ceil(rest / 2) + 1) + '*'.repeat(n) + string.slice(-Math.floor(rest / 2) + 1);
};
console.log(replaceMiddle('+923451234567', 7));
console.log(replaceMiddle('+923451234567', 6));
console.log(replaceMiddle('+923451234567', 5));
console.log(replaceMiddle('+923451234567', 4));
console.log(replaceMiddle('+923451234567', 3));
console.log(replaceMiddle('+923451234567', 2));
console.log(replaceMiddle('+923451234567', 1));

.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 4 :(得分:1)
首先我们得到要替换的子字符串:
//you can use variables here too
var substringToBeReplaced = num.substring(4, 11); //4512345
然后我们替换字符串中的子字符串:
var str = '+923451234567'
str.replace(substringToBeReplaced, '*******'); //result will be +923*******67
如果您想要替换其他一组数字,则可以使用其他范围而不是4 - 11
。
答案 5 :(得分:1)
var str = '+923451234567';
var lol = str.replace(/^(\+?[\d]{3})\d+(\d{3})$/g,"$1*****$2");
console.log(lol);

答案 6 :(得分:0)
我只是重建一个像这样的新字符串
replaceWithStar(index1,index2, str) {
return str.substr(0, index1) + '*******'+ str.substr(index2, str.length);
}
答案 7 :(得分:0)
尝试这是一种完整的方法。
setStar(val) {
let value = val.split('');
let centerVal = value.slice(3,7);
return value.slice(0,3).join("") + centerVal.map(()=> "*").join("") + value.slice(7,11).join("");
}
我希望有用。