电话号码解析与验证工具

在处理用户输入的电话号码时,经常需要一种简单有效的方法来解析、标准化和验证电话号码。本文介绍的电话号码解析工具正是为了满足这一需求而设计的。它最初是为了处理北美号码计划(NANP)的电话号码而构建的,但也应该能够处理国际电话号码。不过,需要注意的是,如果一个国家的代码使用了字母数字代码而不仅仅是数字代码,那么这个工具可能就无法处理了。尽管如此,这个工具在处理几乎所有测试过的格式方面都表现出了强大的能力。

在多种情况下,都需要一种简单易用的方式来解析、标准化和验证用户在网络表单上输入的电话号码,因此诞生了PhoneNumber结构。它最初只是一个简单的结构,只能解析有限的几种格式,但随着时间的推移,增加了更多的高级解析功能,甚至增加了对音位电话号码的支持。尽管在解析带有分机代码的电话号码时还存在一些限制,但大部分情况下它都能处理遇到的几乎所有格式。

使用代码

代码文件是完全文档化的,并包含了很多示例,因此这里只提供一些基本示例来展示这个结构的能力。

通过指定整数值创建一个基本实例。

PhoneNumber phone = new PhoneNumber(1, 800, 222, 2222, 1234); Console.WriteLine(phone);

输出:(800) 222-2222 ext 1234

通过解析数字字符串创建实例。

PhoneNumber phone = new PhoneNumber("1-800-222-2222 ex 1234"); Console.WriteLine(phone);

输出:(800) 222-2222 ext 1234

通过解析音位电话号码创建实例。

PhoneNumber phone = new PhoneNumber("800 MY-TEST ex 1234", true); Console.WriteLine(phone);

输出:(800) MY-TEST ext 1234

创建一个实例并检查电话号码是否为NANP有效。

PhoneNumber phone = new PhoneNumber("(800) 222.2222"); Console.WriteLine("Is NANP valid? " + phone.IsNanpValid);

输出格式使用默认格式输出("P"格式字符串),但输出可以定制为几乎任何想要的格式。以下是接受的格式字符串的概述:

令牌描述:

  • D:根据其值自动格式化电话号码。可能的格式:c-a-x-s E, c-a-x-s, (a) x-s, (a) x-s E, x-s E, x-s。
  • G:"c-a-x-s e"的别名。
  • N:纯数字电话号码,没有特殊格式化字符(与caxs e和/或caxs和/或axs e和/或axs和/或xs e和/或xs相同)。
  • P:如果指定了音位字符串,则为音位表示。如果没有音位字符串,则此格式字符串与"D"格式字符串相同。可能的格式:c-a-p E, c-a-p, (a) p E, (a) p, p E, p, c-a-x-s E, c-a-x-s, (a) x-s E, (a) x-s, x-s E, x-s。
  • F:"P (x-s)"的别名,或者如果没有音位字符串,则为"D"。
  • c:格式字符串中出现的任何地方都将被国家代码替换。
  • a:格式字符串中出现的任何地方都将被3位NPA代码替换。
  • x:格式字符串中出现的任何地方都将被3位NXX代码替换。
  • s:格式字符串中出现的任何地方都将被4位站码替换。
  • e:格式字符串中出现的任何地方都将被分机代码替换。
  • E:格式字符串中出现的任何地方都将被"ext "前缀的分机代码替换。
  • p:格式字符串中出现的任何地方都将被电话号码的音位表示替换。如果没有音位字符串,则此格式字符串与"x-s"相同。如果音位字符串不是七个字符,则使用NPA和NXX代码使其成为七个字符。

所有其他字符都保持不变。请注意,令牌是区分大小写的。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485