我必须根据由星号和特殊字符构建的给定掩码来格式化字符串。
掩码中的星号代表给定字符串中的字符,掩码中的其他特殊字符应添加到给定字符串的正确位置 - 根据它们在掩码中的位置。
例子:
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] 删除。
我来说两句