电话号码的 12 位正则表达式

问题描述 投票:0回答:4

我正在尝试获取格式为 12 位数字的电话号码的正则表达式:+############。

我尝试使用的代码是

([+]?)\d{12}(\d{2})?$
,但没有运气。

php regex phone-number
4个回答
0
投票

试试这个:

^\+\d{12}(\d{2})?$

您需要转义加号

Regex101 演示


0
投票

此模式将精确匹配加号后的 12 位数字:

/^\+\d{12}$/

您的尾随可选

(/d{2})?
组件在您的模式中做什么?


这与没有正则表达式的功能相同:

$phone='+012345678912';
if($phone[0]=='+' && strlen($phone)==13 && is_numeric(substr($phone,1))){
    echo 'valid';
}else{
    echo 'invalid';
}
// displays: valid

-1
投票

我们是否需要捕获某些数字/序列,或者您只是验证其具有该格式的数字?

每当我不确定正则表达式时,我都会使用这个在线工具regex101。它在右侧准确显示您正在捕获/检查的内容,这非常有用。根据您的用例,我不明白这个正则表达式如何不起作用,请提供一个示例。否则:

  1. 您仅捕获 + 号和最初的 12 之后的 2 位数字。

  2. 您锚定到字符串的末尾而不是开头
  3. + 和 2 个额外数字都是可选的,但您想获得准确的 +############ 吗?

我建议您使用

\+(\d{12})
并避免使用不需要的锚点和捕获组。


-1
投票

如果您想支持三个数字组之间的可选空格,您可以使用此正则表达式

^(\+)(\d{3}\s?){4}(\d{2})?$

其中

\s
space 字符,
?
表示 可选

https://regex101.com/r/nX5XnH/3(演示)

+012 345 678 912 (ok)
+012345 678 912 (ok)
+012 345678912 (ok)
+01234567891244 (ok)
012345678913 (no mach - missing plus sign)
© www.soinside.com 2019 - 2024. All rights reserved.