V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
bb2018
V2EX  ›  Python

大家看看这个手机,邮箱,座机。QQ 的正规则有问题没有?

  •  
  •   bb2018 · 2017-11-07 15:27:09 +08:00 · 2393 次点击
    这是一个创建于 2362 天前的主题,其中的信息可能已经有所发展或是发生改变。
    p3=re.compile('^0\d{2,3}\d{7,8}$|((/(/d{3}/))|(/d{3}/-))?13[0-9]/d{8}|15[89]/d{8}|17[0-9]/d{8}|18[0-9]/d{8}|[^\._-][\w\.-]+@(?:[A-Za-z0-9]+\.)+[A-Za-z]+|[1-9]\\d{4,10})

    okabc=p3.match(tmpstr)

    测试了一下。总不是能完美成功。还漏掉或写错了什么?
    16 条回复    2017-11-13 00:44:32 +08:00
    gstqc
        1
    gstqc  
       2017-11-07 15:36:04 +08:00 via iPhone
    分开四个来判断啊
    master13
        2
    master13  
       2017-11-07 15:44:29 +08:00   ❤️ 3
    通常我们写作文的时候,会划分自然段
    araraloren
        3
    araraloren  
       2017-11-07 17:12:50 +08:00
    请务必使用 re.VERBOSE
    chenyu8674
        4
    chenyu8674  
       2017-11-07 17:16:23 +08:00
    同 1L,为啥不分开来判断?
    dven
        5
    dven  
       2017-11-07 21:48:55 +08:00
    一,最好分开判断
    二,手机号码范围应该是 13[0-9],14[0-9],15[0-9],17[0-9]和 18[0-9],漏掉了很多
    duan602728596
        6
    duan602728596  
       2017-11-07 23:07:11 +08:00 via iPhone
    邮箱可能会有 xxx @ xxx.xxx.xx 的格式
    dven
        7
    dven  
       2017-11-08 05:25:51 +08:00
    @duan602728596
    后面三级四级或者更多都可能,例如某些层级复杂的跨国企业
    dot
        8
    dot  
       2017-11-08 09:10:33 +08:00
    @dven 马上就新增 16[0-9] 和 19[0-9] 了
    qsnow6
        9
    qsnow6  
       2017-11-08 09:35:17 +08:00
    @dven 我 187 开头的手机号就这样被你忽略了
    qsnow6
        10
    qsnow6  
       2017-11-08 09:36:01 +08:00
    看错了
    dven
        11
    dven  
       2017-11-08 23:52:39 +08:00
    @dot 16 号段启用的几率大些,160/168 声讯台应该基本淘汰的差不多了,19 作为国际接入冠字号比较难
    dot
        12
    dot  
       2017-11-09 00:17:29 +08:00 via Android
    @dven 山东电信开卖 199 号段了,这个以前是自动呼台的服务号……国际接入 19 冠字啥情况? 166 也批给联通了。
    dven
        13
    dven  
       2017-11-10 21:49:47 +08:00
    @dot 190,是国际接入号的字头
    dot
        14
    dot  
       2017-11-11 11:20:58 +08:00 via Android
    @dven 国际接入不是 00 么
    dot
        15
    dot  
       2017-11-11 11:26:26 +08:00 via Android
    dven
        16
    dven  
       2017-11-13 00:44:32 +08:00
    @dot 刚看了下 2017 版编号计划,确实调整出来了,以前国外打来的电话都是显示 000190852xx 这样...
    190、196 和 197 原用于中国电信、中国联通和中国移动的运营商标识码以及智能网电话卡业务,现要求对标识码进行调整,分别调整为 1241 (中国电信)、1243 (中国联通)、1242 (中国移动)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2778 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:19 · PVG 23:19 · LAX 08:19 · JFK 11:19
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.