替换JavaScript中的中间n个字符

时间:2017-10-26 14:54:13

标签: javascript jquery

我有一个电话号码,我希望将其显示为审查形式。例如,我有:+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,"@"));

我将如何实现这一目标?

8 个答案:

答案 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("");
      }

我希望有用。