我需要在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];});