我需要在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

最佳答案

请尝试以下操作:

newReference = mask.replace(/#/g,function(m,o) {return reference[o];});

10-04 17:35