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

时间:2010-07-11 18:17:41

标签: javascript jquery formatting string-formatting

假设我有一个

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

示例:

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

我想我可以通过迭代源字符串('0123456789'中的foreach字符)来获取数字,但我不知道如何将它优雅地放在一起以正确的格式。也许有一个jQuery函数可以做到这一点吗?

2 个答案:

答案 0 :(得分: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++);
    });
}

答案 1 :(得分:4)

"abc+d(123)4567890"
.replace(/\D/g, "")
.replace(/(\d{3})(\d{3})(\d{4})/, "$1 - $2 - $3")

首先我们删除非数字(\ D),然后我们对它们进行分组,最后我们在替换文本中使用这些组。