gpt4 book ai didi

javascript - 使用正则表达式呈现格式化的电话号码

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

我正在 Angular 中编写一个管道,它根据字符串中包含的内容呈现适当格式的电话号码。

输入:字符串需要渲染的可能情况:+1 (123) 456-7891(国家代码 + 十位数字)(123) 456-7891(十位数字)(123) 456-7891 ext1234(带分机号的十位数字)+ 1 (123) 456-7891 ext1234(国家/地区代码、十位数字、分机号)

我当前的代码:

const rawPhoneNumber = '1(626) 423-3343 ex123'
const pattern = /(\d{1})?([a-zA-Z\d]{3})([a-zA-Z\d]{3})([a-zA-Z\d]{4})(.*)/
const matches = rawPhoneNumber.replace(/[\W_]*/g, '').match(pattern);
let arrOfDigits = matches.filter((item, index) => item != undefined);
arrOfDigits = arrOfDigits.filter((item, index) => item.length)

// simple Phone
if (arrOfDigits.length === 4) {
console.log(`(${arrOfDigits[1]}) ${arrOfDigits[2]}-${arrOfDigits[3]}`)
}
// prephonesuffix
if (arrOfDigits.length === 6) {
console.log(`+${arrOfDigits[1]} (${arrOfDigits[2]}) ${arrOfDigits[3]}-${arrOfDigits[4]} ${arrOfDigits[5]}`)
}
// pre or suff
if (arrOfDigits.length === 5) {
if (arrOfDigits[1].length <= 2) {
console.log(`${arrOfDigits[1]} (${arrOfDigits[2]}) ${arrOfDigits[3]}-${arrOfDigits[4]}`)
} else {
console.log(`(${arrOfDigits[1]}) ${arrOfDigits[2]}-${arrOfDigits[3]} ${arrOfDigits[4]}`)
}
}

我的问题是,如果数字不完美,这很容易被破坏。我想了解有关如何覆盖更多案例的任何建议。

谢谢。

最佳答案

我为此目的创建了一个指令。

GitHub Gist

关于javascript - 使用正则表达式呈现格式化的电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54974280/

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