我有一个纯文本,其中包含不同模式的电话号码。我需要在纯文本中找到电话号码模式。我做过这件事
$regex = '/^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$/';
$text = "fhsd hjkh ksd fsd fjkfhdsk 333-445-33333 sdfhjksdh s sdfjksd fdf";
if(preg_match($regex,$text,$match)){
print_r($match);
}else echo "not found";只有当我们给出电话号码作为输入时,它才能检测到电话号码。它没有检测到纯文本中的电话号码模式。
请帮我这个忙。提前感谢!
发布于 2014-02-26 08:21:57
从正则表达式的开头移除^,从正则表达式的末尾移除$:
$regex = '/(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?/';您可以阅读更多关于锚的内容。
UPDATE:作为以连字符分隔的电话号码的正则表达式,分为以下三个部分:
$regex = '/\\d+-\\d+-\\d+/';发布于 2014-02-26 08:50:20
用这个表达式表示连字符分隔的电话号码。
$regex =‘/d+-d+-d+/’;
https://stackoverflow.com/questions/22035522
复制相似问题