Regex, который контролирует телефонные номера - PullRequest
1 голос
/ 23 августа 2010

Я новичок в регулярных выражениях, и мне нужно только одно утверждение.

Я хочу, чтобы мое утверждение принимало следующие числа:

06643823423 может быть длиннее или 0664 3843455 или +43664 4356999

, и важно, чтобы это был только один оператор.

кто-нибудь может мне помочь?

Ответы [ 4 ]

1 голос
/ 23 августа 2010

Как насчет:

^\+?[0-9 ]+$

Вы можете использовать это с preg_match, например,

$matches = preg_match("/^\+?[0-9 ]+$/", $telephone_number);
0 голосов
/ 23 августа 2010

Попробуйте \+?\d+\s?\d+

Объяснить:
\+? - знак плюс (экранируется \, поскольку в регулярном выражении '+' - специальный символ). '?' означает «0 или 1 из предыдущих символов», что делает его необязательным
\d+ - \ d означает цифру; знак плюс означает 1 или более
\s? - \ s означает символ пробела; ? делает его необязательным
\d+ - \ d означает цифру; знак плюс означает 1 или более

Так что это должно соответствовать 2 или более цифрам, с необязательным знаком + в начале и необязательным пробелом где-то посередине.

0 голосов
/ 23 августа 2010

из того, что у вас есть, единственное регулярное выражение, которое я могу придумать:

$phone_number = '+449287645367';
var_dump(preg_match("/^[\+|0][0-9]{10,12}$/",str_replace(' ','',$phone_number)));
0 голосов
/ 23 августа 2010
$regExp = '/^([+][4][3]|[0]){1}([0-9]{3})([ ]{0,1})([0-9]{7})$/';
$number = "06643823423";

if(!preg_match($regExp,trim($number)))
{
        echo FALSE;
}
else
{                
        echo TRUE;
}
...