我有一个纯文本,其中包含不同模式的电话号码。我需要在纯文本中找到电话号码模式。 我做了这个
$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";
仅当我们将电话号码作为输入时才会检测到电话号码。它没有检测到纯文本中的电话号码模式。
请帮帮我。提前谢谢!
答案 0 :(得分:3)
从开头删除^
,从正则表达式的末尾删除$
:
$regex = '/(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?/';
您可以阅读有关anchors的更多信息。
更新:以连字符分隔的电话号码的正则表达式分为三部分:
$regex = '/\\d+-\\d+-\\d+/';
答案 1 :(得分:0)
将此表达式用于连字符分隔的电话号码
$ regex ='/ \ d + - \ d + - \ d + /';