我已经编写了regex来验证美国和英国的电话号码。它运行良好,但并非适用于所有情况。
比如它不应该过滤合法的数字,比如:12345678
或123456789
、1989
等。可能我需要验证US UK
的每个区号的前三位。我说得对吗?
以下是所有英国区号的列表:http://www.area-codes.org.uk/大名单。我需要将它们全部包含在regex中吗?
问题:它还应该过滤这样的漏洞:203453sever67
如何做到这一点?
以下是示例:http://ideone.com/zwzmKU
REgex:
$pattern = '((^'(?(?:(?:0(?:0|11)')?['s-]?'(?|'+)44')?['s-]?'(?(?:0')?['s-]?'(?)?|0)(?:'d{2}')?['s-]?'d{4}['s-]?'d{4}|'d{3}')?['s-]?'d{3}['s-]?'d{3,4}|'d{4}')?['s-]?(?:'d{5}|'d{3}['s-]?'d{3})|'d{5}')?['s-]?'d{4,5}|8(?:00['s-]?11['s-]?11|45['s-]?46['s-]?4'd))(?:(?:['s-]?(?:x|ext'.?'s?|'#)'d+)?)$)|('(?[2-9][0-8][0-9]')?[-. ]?[0-9]{3}[-. ]?[0-9]{4}))';
为了确保电话号码是正确的,请避免使用regex,并使用一些可以帮助您验证电话号码的标准库。
我建议https://code.google.com/p/libphonenumber/