gpt4 book ai didi

c# - 正则表达式电话号码和电话分机

转载 作者:行者123 更新时间:2023-11-30 17:12:57 24 4
gpt4 key购买 nike

我有一个正则表达式可以清理电话号码并将它们转换为有效的电话号码,例如:+1 123-1223。

正则表达式:

Regex.Replace(phone, @"^\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*$", "+1 $1$2$3-$4$5$6-$7$8$9$10");

但我想补充一点,所以任何超过 12 个数字的数字都会将剩余的数字作为分机添加。因此,如果数字是 810.232.122323,它将变为 +1 810-232-1223 x23。

这可以通过改变正则表达式来实现吗?有没有好的方法来做到这一点?我不太了解正则表达式。谢谢!

最佳答案

只需将此添加到末尾,这将是您的第 11 组(除非它实际上有 2 位或更多,否则它不会提取分机

(\d{2,})

代码将是:

Regex.Replace(phone, 
@"^\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d{2,})$",
"+1 $1$2$3-$4$5$6-$7$8$9$10 Ext $11");

如果这是可选的,那么这样做:

(\d{2,})?

它仍然会匹配您的电话号码,但不会像上面那样强制分机

要使这个可选的也不使用 Ext,则需要使用 MatchEvaluator

类似这样的东西(但我面前没有编译器,所以它可能会偏离一点,应该进行测试)

Regex.Replace(phone, 
@"^\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d)\D*(\d{2,})$",
"+1 $1$2$3-$4$5$6-$7$8$9$10 Ext $11");
match =>
{
var returnVal = "+1 ";
for(int i = 1; i <= 3; i++)
{
returnVal += match.Groups[i].Value;
if(i == 3 || i == 6)
returnVal += "-";
}
returnVal += match.Groups[11].Success ? " Ext " + match.Groups[11] : "" )
return returnVal;
}
)

关于c# - 正则表达式电话号码和电话分机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10194190/

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