我需要在javascript中对字符串应用替换蒙版。掩码是用户输入,语法如下:
我已经提出了以下似乎正在运行的代码,但我想知道是否有更好的方法可以通过单个正则表达式或任何其他方式实现此目的(请不要使用库)。
谢谢
var reference = '123-45678-000';
var mask ='###W#####-9##';
var newReference = mask;
while ((match = /#{1}/.exec(newReference)) != null) {
newReference = newReference.substring(0, match.index) + reference.substring(match.index,match.index+1) + newReference.substring(match.index + 1);
}
console.log("old : " + reference); //prints 123-45678-000
console.log("mask: " + mask); //prints ###W######9##
console.log("new : " + newReference); //prints 123W45678-900
答案 0 :(得分:1)
尝试以下方法:
newReference = mask.replace(/#/g,function(m,o) {return reference[o];});
答案 1 :(得分:1)
var reference = '123-45678-000';
var mask ='###W#####-9##';
var newReference = "";
for (var n=0;n<reference.length;n++){
newReference+=( mask.charAt(n) == '#' )?reference.charAt(n):mask.charAt(n);
}