Php preg_match代码用于匹配电话号码


Php preg_match code for match the phone number

preg_match()+(91) 111 11111中不工作

代码是:

$number = +91 111 11111;
if (preg_match('/^'s*(?:'+?('d{1,3}))?[(]'+[)]?([-. (]*('d{3})[-. )]*)?(('d{3})[-. ]*('d{2,4})(?:[-.x ]*('d+))?)'s*$/', $number)) {
   echo "True"; 
}

它正在工作。但不工作在+91 (111) 11111

您可能想重新访问您的regex或尝试这样做:

<?php
    if (preg_match('#(^['+'d]['d]{1,2})?('()?(['d's]*)?('))?([-. (]*('d{3})[-. )]*)?(('d{3})[-. ]*('d{2,4})(?:[-.x ]*('d+))?)'s*$#', $number)) {
        echo "True";
    }

UPDATE: CHANGED PATTERN

<?php
    // MATCHES: "+91 (111) 11111" OR "+91 111 11111" OR "91 (101) 23454" 
    // OR "+(91) (101) 23454" 
    // BUT NOT "1234500000000000000000000" OR "+121(121)38778" 
    $rx     = '#(^['+'d]('()?['d]{1,2})*('))?('s)('()?(['d's]*?)('))?('s)(['d's]*?)$#';
    if (preg_match($rx, $number)) {
        //echo "True";
    }