电话号码正则表达式

时间:2011-06-13 12:58:02

标签: regex

我目前正在尝试验证英国电话号码:

我正在寻找的格式是:01234 567891或01234567891 - 所以我需要这个数字有5个数字,然后是一个空格,然后是6个数字,或者只是11个数字。

号码必须以0开头。

我看了几个例子:

/^[0-9]{10,11} - 检查字符是否都是数字 /^0[0-9]{9,10}$/ - 检查第一个数字是否为0

我只是不确定如何将所有这些放在一起并检查是否有空格。

有人可以帮我解决这个正则表达式吗?

由于

7 个答案:

答案 0 :(得分:4)

试试这个正则表达式:

/^0\d{4}\s?\d{6}$/ 

答案 1 :(得分:2)

许多人尝试在一个步骤中进行输入验证和格式化。

最好将这些过程分开。

以任何格式匹配英国电话号码

^(?:(?:\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)44\)?[\s-]?(?:\(?0\)?[\s-]?)?)|(?:\(?0))(?:(?:\d{5}\)?[\s-]?\d{4,5})|(?:\d{4}\)?[\s-]?(?:\d{5}|\d{3}[\s-]?\d{3}))|(?:\d{3}\)?[\s-]?\d{3}[\s-]?\d{3,4})|(?:\d{2}\)?[\s-]?\d{4}[\s-]?\d{4}))(?:[\s-]?(?:x|ext\.?|\#)\d{3,4})?$ 

上述模式允许用户以他们熟悉的任何格式输入数字。不要限制用户输入特定格式。

提取NSN,前缀和扩展程序

^(\(?(?:0(?:0|11)\)?[\s-]?\(?|\+)(44)\)?[\s-]?)?\(?0?(?:\)[\s-]?)?([1-9]\d{1,4}\)?[\d[\s-]]+)((?:x|ext\.?|\#)\d{3,4})?$

接下来,提取各种元素。

如果使用国际格式,则$ 2将为'44',否则采用带有'0'的国家格式。

$ 4包含分机号码(如果有)。

$ 3包含NSN部分。

验证和格式化

使用其他RegEx模式检查NSN是否具有此数字范围的正确位数。最后,将数字存储为E.164格式或以E.123格式显示。

英国号码的验证和显示格式RegEx模式的详细列表位于:

http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_UK_Telephone_Numbers

这里复制的时间太长,很难维护本文档的多个副本。

答案 2 :(得分:1)

如果您正在寻找所有英国号码,我会寻找的不仅仅是这个号码,有些号码的格式为020 7123 4567等。

^\s*\(?(020[7,8]{1}\)?[ ]?[1-9]{1}[0-9{2}[ ]?[0-9]{4})|(0[1-8]{1}[0-9]{3}\)?[ ]?[1-9]{1}[0-9]{2}[ ]?[0-9]{3})\s*$

答案 3 :(得分:1)

/ \ d *(*)* + * - * /

简单电话正则表达式包括+()和 - 任何地方,以及数字

答案 4 :(得分:0)

我认为^0[\d]{4}\s?[\d]{5,6}}会对你有用。我使用[\d]代替[0-9]。 我发现RegExr是一个有用的在线工具,用于检查和试用您的正则表达式。它还有一个很好的示例库,可以帮助您指明正确的方向

答案 5 :(得分:0)

  

你应该只计算位数并检查它是否为10,

某些英国号码只有9位数字,而不是10位数字(不包括前导0)。

这些包括40个01区号(使用“4 + 5”格式),016977区号(使用“5 + 4”格式),所有0500号码和一些0800号码。

有一个列表:http://www.aa-asterisk.org.uk/index.php/01_numbers

答案 6 :(得分:0)

此美国数字模式也接受以下手机:

800-432-4500,选项:9,分机号:100316
800-432-4500,选项:9,分机号:X100316
800-432-4500,选项#3

(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4}),?(?:\s*(?:#|x\.?|opt(\.|:|\.:)?|option)\s*#?(\d+))?,?(?:\s*(?:#|x\.?|ext(\.|:|\.:)?|extension)\s*(\d+))?

(使用this answer in other topic作为起点)