标题:请大家帮我看看我写的正则表达式哪儿出问题了.
只看楼主
cime63
Rank: 1
等 级:新手上路
帖 子:167
专家分:0
注 册:2004-8-9
 问题点数:0 回复次数:7 
请大家帮我看看我写的正则表达式哪儿出问题了.

正在学正则表达式,想写一下匹配电话号码的正则

如下:^((\d{4}( |-))?\d{7})|(13\d{9})$

手机号认为是13开头的11位数

电话号码现在只考虑了四位区号+7位号码的

本来应该是非常简单的,可是把两个合在一起后有些本来不正确的输入也显示匹配成功了

如:12623612220

大家帮我看看我写的哪儿有问题

这是在ASP.NET+C#下测试的

搜索更多相关主题的帖子: 正则表达式 
2005-07-05 12:33
cime63
Rank: 1
等 级:新手上路
帖 子:167
专家分:0
注 册:2004-8-9
得分:0 

版主跑哪儿去了?记得这儿有几个人还比较热心的呀
^((0\d{2,3}([ -]?))?\d{7,8})|(13\d{9})$
上面是修改后的正则表达式
可是依然有号码能蒙混过关,有人能分析一下问题出在哪儿吗?
现在的表达式匹配3或4位区号,区号可以没有,区号与号码之间用空格头号或者空来分隔
手机号码认为是13开头的11位数

请帮忙
谢谢大家

2005-07-05 17:42
hxfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:5807
专家分:108
注 册:2005-4-7
得分:0 
等我想想啊
别着急

2005-07-05 19:44
hxfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:5807
专家分:108
注 册:2005-4-7
得分:0 
是不是只对手机号码判断啊?
我的意思是不包括固定电话
那样就简单了

先把前两位取出来
判断是不是13
然后对后面的判断是不是9位的数字不就是了?

2005-07-05 19:46
cime63
Rank: 1
等 级:新手上路
帖 子:167
专家分:0
注 册:2004-8-9
得分:0 
^((0\d{2,3}([ -]?))?\d{7,8})|(13\d{9})$
hxfly版主,我想实现的是把国内的默写电话和手机号码一次性进行判断
固定电话区号为3位或者4位,号码为7位或者8位(我的印象中,区号都是0开头的,不知道对不对?)
手机为13打头的11位数
上面的正则不能一网打尽,有的会蒙混过关
谢谢费心了

2005-07-06 08:48
hxfly
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:5807
专家分:108
注 册:2005-4-7
得分:0 
这个我都没有思路了
区号的位数都不一样,怎么做呢?
还有
其实国际通用的区号是86,+86,086这样的

没有思路啊

2005-07-06 09:01
cime63
Rank: 1
等 级:新手上路
帖 子:167
专家分:0
注 册:2004-8-9
得分:0 
现在我考虑的只是国内的
国际通用的如果想考虑全面,那么这个正则也不知道有多长了

2005-07-06 12:30
cime63
Rank: 1
等 级:新手上路
帖 子:167
专家分:0
注 册:2004-8-9
得分:0 
因为现在正在学习正则,所以尽量练习一下
如果真正应用的话,倒不必这么较真

2005-07-06 12:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-22196-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047569 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved