• 技术文章 >php教程 >PHP源码

    PHP正则表达式的电话号码匹配

    2016-06-08 17:27:24原创733

    preg_match_all ("/(? (d{3})? )? -? (?(1) [-s] ) d{3}-d{4}/x",
    "Call 555-1212 or (221)-(820)-555-1212", $phones);
    print_r($phones[0]);echo "
    ";
    print_r($phones[1]);


    输出的结果为:
    Array ( [0] => 555-1212 [1] => (820)-555-1212 )
    Array ( [0] => [1] => 820 )
    谁能帮忙解释下这个正则表达式的意思?关键是 (? (d{3})? )? (?(1) [-s] ) 这部分。
    为什么能 匹配 (820),却不能匹配 (221) ?


    (? (d{3})? )? (?(1) [-s] ) 中
    (1) 引用的即 (d{3})
    (?(1) [-s] ) 如果 (d{3}) 匹配成功,则继续匹配 [-s]
    原型是(?a b|c) ,如果a匹配了,继续匹配b,否则匹配c

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp quot 1212 phones 820
    上一篇:php 增加数据保存到mysql数据库实例教程 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • php实用图片水印效果代码• 检测移动设备的php代码(手机访问)• php 列出目录与删除目录实例代码• 用PHP实现小写金额转换大写金额【精确到分】• 收藏PHP常用自定义函数
    1/1

    PHP中文网