gpt4 book ai didi

javascript - 以特定方式格式化电话号码?

转载 作者:行者123 更新时间:2023-12-03 00:53:24 26 4
gpt4 key购买 nike

这不是重复的,链接的线程没有解释如何实现这一点。

我正在寻找特定格式的电话号码。

+xx (x) xxx xxx xxxx

  • 国家/地区代码。
  • 空间。
  • 括号内为零。
  • 空间。
  • 3 位数字。
  • 空间。
  • 3 位数字。
  • 空间。
  • 4 位数字。

用户可以输入任何内容(但应该始终是 +61 数字)。到目前为止,我已经尝试过以下方法。

  • 删除空格和非数字字符。
  • 如果以零开头,请删除。
  • 如果以 610 开头,请删除。
  • 如果以 61 开头,请删除。
  • 以特定格式重新添加国家/地区代码,电话号码其余部分的格式为 3,3,4 格式。

我的问题是 - 有没有办法将下面的内容简化为一个表达式?

    value = value.replace(/\D/g,'');
value = value.startsWith(0) ? value.substring(1) : value;
value = value.startsWith('610') ? value.substring(3) : value;
value = value.startsWith('61') ? value.substring(2) : value;
value = '+61 (0) ' + value.replace(/\d{3,4}?(?=...)/g, '$& ');

最佳答案

为了扩展和解释 @splash58 的评论,他们建议使用两个正则表达式来完成您想要的完全替换。第一个(/\D|(0+|610|61)/gi) 将删除字符串中所有不需要的字符。第二个 (/(\d{3})(\d{3})(\d{4})/gi) 将获取剩余的数字并捕获所需的分组,以便您可以格式化它们如预期的。我强烈建议查看他们提供的 regex101 链接,因为该网站将充分解释给定表达式如何以及为何与右侧的内容相匹配。

简短版本:

/\D|(0+|610|61)/gi 将匹配任何非数字字符OR 0、“610”或“61”字符串”。将其替换为无需删除的内容

/(\d{3})(\d{3})(\d{4})/gi 将匹配 10 位数字的字符串并捕获组,这就是括号的内容, 3 位数字、3 位数字和 4 位数字。这些可以根据其位置在替换中引用为标识符 $1$2$3

把它们放在一起:

// look in a string and return formatted phone number only
function phone(str) {
str = str.replace(/\D|(0+|610|61)/gi, '');
str = str.replace(/(\d{3})(\d{3})(\d{4})/gi, '+61 (0) $1 $2 $3');
return str;
}
console.log(phone('xgsh6101231231234vvajx'));
console.log(phone('+6101231231234'));

我还建议首先在整个输入字符串中搜索一系列数字或空格,以便减少误报。这可以通过像 /[\d\s]+/

这样的正则表达式来完成

关于javascript - 以特定方式格式化电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52949926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com