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";
}