字符替换掩码在javascript中的字符串

时间:2016-04-07 21:03:36

标签: javascript regex

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

2 个答案:

答案 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);
}