我在制作能够验证电话号码是否为此格式(xxx)xxx-xxxx的功能时遇到问题。
我的尝试是使用preg_match确认该数字是否采用给定的格式,但我对该模式有疑问。
preg_match("/^([0-9]){3}[0-9]{3}-[0-9]{4}$/", $field)
我认为我的问题是我不知道如何处理preg_match中的括号。
答案 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)