整理关于验证电话格式的正则表达式
由于某种特殊情况,前几天又重新开始写 PHP。这次遇到一个比较有意思的问题,被要求使用 PHP 脚本验证来自某个表单的一个(请注意,是一个)文本框中的数据是否为合法的国内电话号码格式或合法的国内移动电话号码格式。
我知道这样 BT 的需求不通过正则实现恐怕是南辕北辙。而我又一向不谙正则,尤其对排列组合十分感冒。无奈之下,搜索……
首先看到 phpchina 上某位兄台的博客上的文章,貌似对常用正则表达式做了一个清晰的整理。文章上对国内电话格式合法性的验证,给出了这样的公式:
\d{3}-\d{8}|\d{4}-\d{7}
很显然,它的适用范围不够广泛。
我们来重新分析一下需求:
1、合法的国内固定电话号码格式:带有前导零的长途区号、连字符“-”(念“hyphen”,具体可参考这里)、电话号码。除此之外,还应考虑分机号码的存在。
合法格式举例:
0571-88909090
0573-6262662
021-60606060-808