用于特定电话号码格式的PHP正则表达式

时间:2014-10-19 07:32:41

标签: php regex

我试图在php中验证电话号码。要求是(0d)dddddddd或0d dddddddd,其中d是0-9。这就是我现在所拥有的

if(!preg_match("/^0[0-9]{9}$/", $phone))
{
//wrong format
}

我尝试了几个类似的问题,但仍然无法理解正则表达式。 任何人都可以帮我修复正则表达式吗?

4 个答案:

答案 0 :(得分:1)

您可以尝试以下代码,

if(!preg_match("~^(?:0\d\s|\(0\d\))\d{8}$~", $phone))
{
//wrong format
}

DEMO

<强>解释

^                        the beginning of the string
(?:                      group, but do not capture:
  0                        '0'
  \d                       digits (0-9)
  \s                       whitespace 
 |                        OR
  \(                       '('
  0                        '0'
  \d                       digits (0-9)
  \)                       ')'
)                        end of grouping
\d{8}                    digits (0-9) (8 times)
$                        before an optional \n, and the end of the
                         string

答案 1 :(得分:0)

^(?:\(0\d\)|0\d\s)\d{8}$

试试这个。看看演示。

http://regex101.com/r/wQ1oW3/8

答案 2 :(得分:0)

^((\(0\d\))|(0\d ))\d{8}$

匹配

(05)12345678
05 12345678

参见示例http://regex101.com/r/zN4jE4/1

if(!preg_match("/^((\(0\d\))|(0\d ))\d{8}$/", $phone))
{
//wrong format
}

答案 3 :(得分:0)

试试这个

if(!preg_match("^(?:\(0\d\)|0\d\s)\d{8}$", $phone))
{
//wrong format
}