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

时间:2017-07-01 07:00:52

标签: php regex

我试图获得一个12位数字的电话号码的正则表达式:+ ############。

我尝试使用的代码是([+]?)\d{12}(\d{2})?$,但没有运气。

请帮忙

4 个答案:

答案 0 :(得分:1)

此模式将在加号后正好匹配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 :(得分:0)

试试这个:

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

你需要逃脱加号

Regex101 Demo

答案 2 :(得分:-1)

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

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

  1. 您只是在最初的12后捕获+号和2位数。

  2. 你锚定到字符串的末尾而不是开头
  3. +和2个额外数字都是可选的,但你想要+ ############确切地说?
  4. 我建议您使用\+(\d{12})并避免使用不需要的锚点和捕获组。

答案 3 :(得分:-1)

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

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

其中\s空格字符,?表示可选

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)