首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对电话号码使用Preg_Match()的调整

对电话号码使用Preg_Match()的调整
EN

Stack Overflow用户
提问于 2011-10-23 12:36:03
回答 2查看 330关注 0票数 3

我正在使用preg_match从一段文字中提取基于美国的电话号码的各个部分。我已经可以提取号码了。,但是我想让match[0]只包括电话号码。

问题:我的模式很接近,但是我需要一些帮助来摆脱电话号码之前的任何文本。如何消除前面的字符串"Hey my phone is "

PHP代码

代码语言:javascript
复制
$pattern = '/.*?(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})'
    .'(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})'
    .'[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?.*?/';;

$subject = 'Hey my phone is 911-628-4539, call me tonight at 9:16:00pm, my room is 122-1001';

preg_match($pattern, $subject, $match);

print_r($match);

输出

代码语言:javascript
复制
Array ( [0] => Hey my phone is 911-628-4539 [1] => 911 [2] => 628 [3] => 4539 ) 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-23 12:48:37

只需删除:.*?

从你的审判官那里。如果你不需要它,为什么要匹配它?

票数 5
EN

Stack Overflow用户

发布于 2011-10-23 12:49:10

你捕捉文本部分,因为你匹配它。是领先的.*?做到了这一点。

要么删除它,要么在它后面添加\K

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7866168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档