我目前正在尝试验证英国电话号码:
我正在寻找的格式是:01234 567891或01234567891 - 所以我需要这个数字有5个数字,然后是一个空格,然后是6个数字,或者只是11个数字。
号码必须以0开头。
我看了几个例子:
/^[0-9]{10,11}
- 检查字符是否都是数字
/^0[0-9]{9,10}$/
- 检查第一个数字是否为0
我只是不确定如何将所有这些放在一起并检查是否有空格。
有人可以帮我解决这个正则表达式吗?
由于
答案 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模式的详细列表位于:
这里复制的时间太长,很难维护本文档的多个副本。
答案 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号码。
答案 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作为起点)