JavaScript/jQuery 中基于格式字符串的格式数字

发布于 2024-09-09 08:06:47 字数 491 浏览 2 评论 0原文

假设我有一个

  • 格式字符串“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”中的每个字符)来获取数字,但我不确定如何将其优雅地组合在一起正确的格式。也许有一个 jQuery 函数可以做到这一点?

Let's say I have a

  • format string "XXX - XXX - XXXX" (to format a phone number), or any other format string in which X stands for a number
  • I want to preserve the formatting in the format string (spacing, dashes etc.), but exchange each X for a number and drop all formatting in the source string

Examples:

  • Input: "abc+d(123)4567890", Format String: "XXX - XXX - XXXX", Output: "123 - 456 - 7890"
  • Input "a b c 1 2 3 4567890", Format String: "X:X!XXXXX,XXX", Output: "1:2!34567,890"
  • Input "1234567890", Format String: "(XXX)XXX-XXXX", Output: "(123)456-7890"

I'm thinking I could grab the number by iterating through the source string (foreach character in '0123456789') but I'm not sure how I can then put this together elegantly to the right format. Maybe there is a jQuery function which does this already?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哥,最终变帅啦 2024-09-16 08:06:47

这是一种方法:

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++);
    });
}

Here's one way to do it:

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++);
    });
}
岁月流歌 2024-09-16 08:06:47
"abc+d(123)4567890"
.replace(/\D/g, "")
.replace(/(\d{3})(\d{3})(\d{4})/, "$1 - $2 - $3")

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

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

First we remove the non-digits (\D), then we group them, and finally we use the groups in our replacement text.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文