howema 发表于 2014-04-16 15:54

正则表达式匹配电话号码

网页url中有如下信息:
<dl>
                <dt>电&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;话:</dt>
                <dd>86 0755 29409001</dd>
            </dl>
                                 
                        <dl class="m-mobilephone" data-need-not-login="true" data-no="13662655964">
                <dt>移动电话:</dt>
                <dd class="mobile-number">                        13662655964
                                    </dd>
            </dl>

如何匹配到电话号码和移动电话号码?正则表达式如何写?高手赐教

weishuo1999 发表于 2014-04-16 16:15

其实正则表达式很简单的,不如好好去学一下,不能老是拿来主义

ssfjhh 发表于 2014-04-16 16:23

请独立完成自己的作业。

weishuo1999 发表于 2014-04-16 16:26

本帖最后由 weishuo1999 于 2014-04-16 16:29 编辑

手机号的,之前要检查13开头,后面要检查15 也有14 所以干脆就简单点1后面10个数字,写法如下
1\d{10}

至于固定电话的话,找到规律也这么写就行了以你的这个固定电话为例
86\ 0755\ \d{8}

再扩展一点,区号可能是3位的,电话号码可能是7位的那么可以这样写

86\ \d{3,4}\ \d{7,8}

q1208c 发表于 2014-04-16 16:45

回复 4# weishuo1999

其实在天朝, 要写一个完整的 匹配电话号码的 正则还真不容易. 因为我们的电话号码没啥规律, 7位, 8位,6位, 都有, 区号也是. 2位, 4位, 5位都有. 中间有的写 '-' 有的写空格.

手机号 目前还算好一点点. 但 17, 18, 15, 14, 13 已经很多了. 手机号有人在中间空格, 有人在中间加'-', 哎.

下面这些号, 要如何搞呢? :cry:
+86 10 3230 0203
+86 10 32300203
+861032300203
010 3230 0203
010 32300203
01032300203

+86 138 0013 8000
+86 13800138000
+8613800138000

weishuo1999 发表于 2014-04-16 16:48

所以要楼主自己去学了正则表达式,然后根据需求自己写,话说这么奇葩的电话号码,还真让人抓狂 回复 5# q1208c


   

q1208c 发表于 2014-04-16 16:51

回复 6# weishuo1999
我刚才还忘了有人把区号放在 ( ) 里呢.



   

timespace 发表于 2014-04-16 17:39

用正则处理HTML/XML是编程中的一大悲剧。那么多HTML解析器,随便挑一个就搞定了。

ssfjhh 发表于 2014-04-16 17:41

http://deerchao.net/tutorials/regex/common.htm

Herowinter 发表于 2014-04-16 18:23

回复 5# q1208c
天朝的码农真苦逼。

   
页: [1] 2
查看完整版本: 正则表达式匹配电话号码