日期:2014-05-20  浏览次数:20892 次

求助个正则
/^((0[1-9]{3})?(0[12][0-9])?[-])?\d{6,8}$/]
  谁能帮忙详细解说下。。

------解决方案--------------------
分段理解吧,不算太复杂:

可能不好理解的内容:
^:匹配字符串起始
[1-9]{3}:1~9数字,精确的需要出现3个

$:匹配字符串结束

分段解释:
(0[1-9]{3})?:以0开头,后面跟3个数字,但这整个内容可能有也可能没有
(0[12][0-9])?:以0开头,后面跟着1或者2,然后再来数字0~9,这整个内容可能有也可能没有
((0[1-9]{3})?(0[12][0-9])?[-])?:这整个内容都可能没有
\d{6,8}:数字,6~8位

总的来说,就是个判断带区号的固定电话检查,但有漏洞。漏洞就是允许出现这种号码:
0777011-12345678 这个显然是非法的电话号码