基于JavaScript/jQuery格式字符串的格式编号

Ale*_*lex 6 javascript formatting jquery string-formatting

比方说我有一个

  • 格式字符串"XXX - XXX - XXXX"(格式化电话号码)或X表示数字的任何其他格式字符串
  • 我想保留格式字符串(间距,破折号等)中的格式,但是将每个X换成一个数字并删除源字符串中的所有格式

例子:

  • 输入:"abc + d(123)4567890",格式字符串:"XXX - XXX - XXXX",输出:"123 - 456 - 7890"
  • 输入"abc 1 2 3 4567890",格式字符串:"X:X!XXXXX,XXX",输出:"1:2!34567,890"
  • 输入"1234567890",格式字符串:"(XXX)XXX-XXXX",输出:"(123)456-7890"

我想我可以通过遍历源字符串('0123456789'中的foreach字符)来获取数字但我不知道如何将它优雅地放在正确的格式中.也许有一个jQuery函数已经这样做了?

Mat*_*ley 5

这是一种方法:

function formatPhoneNumber(input, format) {
    // Strip non-numeric characters
    var digits = input.replace(/\D/g, '');

    // Replace each "X" with the next digit
    var count = 0;
    return format.replace(/X/g, function() {
        return digits.charAt(count++);
    });
}
Run Code Online (Sandbox Code Playgroud)