使用regex管理电话号码验证漏洞


managing the phone number validation exploits using regex

我已经编写了regex来验证美国和英国的电话号码。它运行良好,但并非适用于所有情况。

比如它不应该过滤合法的数字,比如:123456781234567891989等。可能我需要验证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/