使用preg_match验证电话号码格式

时间:2015-09-19 02:03:09

标签: php regex

我在制作能够验证电话号码是否为此格式(xxx)xxx-xxxx的功能时遇到问题。

我的尝试是使用preg_match确认该数字是否采用给定的格式,但我对该模式有疑问。

preg_match("/^([0-9]){3}[0-9]{3}-[0-9]{4}$/", $field)

我认为我的问题是我不知道如何处理preg_match中的括号。

2 个答案:

答案 0 :(得分:1)

您需要转义括号:\)$n = "(123)456-3890"; $p = "/\(\d{3}\)\d{3}-\d{4}/"; preg_match($p,$n,$m); var_dump($m);

试试这个:

Thread.sleep(Long.MAX_VALUE)

答案 1 :(得分:1)

您可以通过此代码进行所有此号码验证,

<?php
$array = array(
'0 000 (000) 000-0000',
'000 (000) 000-0000',
'0-000-000-000-0000',
'000 (000) 000-0000',
'000-000-000-0000',
'000-00-0-000-0000',
'0000-00-0-000-0000',
'+000-000-000-0000',
'0 (000) 000-0000',
'+0-000-000-0000',
'0-000-000-0000',
'000-000-0000',
'(000) 000-0000',
'000-0000',
'+9981824139',
9981824139,
919981824139,
'+919981824139',
'qwqwqwqwqwqwqw'
);

foreach($array AS $no){    
            var_dump( ( preg_match( '/\d?(\s?|-?|\+?|\.?)((\(\d{1,4}\))|(\d{1,3})|\s?)(\s?|-?|\.?)((\(\d{1,3}\))|(\d{1,3})|\s?)(\s?|-?|\.?)((\(\d{1,3}\))|(\d{1,3})|\s?)(\s?|-?|\.?)\d{3}(-|\.|\s)\d{4}/', $no )
            ||
            preg_match('/([0-9]{8,13})/', str_replace(' ', '', $no))
            ||
            ( preg_match('/^\+?\d+$/', $no) && strlen($no) >= 8 && strlen($no) <= 13 ) )
          );
    }

//var_dump (preg_match('/([0-9]{8,12})/', '99818241') );
//var_dump( strlen(9981) );

//var_dump (preg_match('/^\+?\d+$/', '+12345678') );
//var_dump (preg_match('/^\+?\d+$/', '12345678') );

这将验证您所有类型的电话号码和输出

bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(false)