Javascript Regexp根据掩码替换

男士紫色

我必须根据由星号和特殊字符构建的给定掩码来格式化字符串。

掩码中的星号代表给定字符串中的字符,掩码中的其他特殊字符应添加到给定字符串的正确位置 - 根据它们在掩码中的位置。

例子:

1.字符串:"123456789",掩码:"(***)-***-***",输出应为:“(123)-456-789"

2. String: "123456", mask: "***-** *", 输出应该是:"123-45 6"

我还必须支持部分匹配,假设在示例一中如下:

字符串:"12345",掩码:"(***)-***-***",输出应为:"(123)-45"

我正在寻找使用 javascript + regex 的解决方案。

谢谢!

特里科特

您可以replaceAll与回调函数一起使用这里不需要正则表达式:

function applyMask(str, mask) {
    let i = 0;
    return mask.replaceAll("*", () => str[i++] || "");
}

console.log(applyMask("123456789", "(***)-***-***")); // "(123)-456-789"
console.log(applyMask("123456", "***-** *")); // "123-45 6"

为了支持旧浏览器,您将使用正则表达式以获得全部替换效果:

function applyMask(str, mask) {
    var i = 0;
    return mask.replace(/\*/g, function () { 
        return str[i++] || ""
    });
}

console.log(applyMask("123456789", "(***)-***-***")); // "(123)-456-789"
console.log(applyMask("123456", "***-** *")); // "123-45 6"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章