preg_match与正则表达式不匹配

时间:2015-12-30 10:31:53

标签: php regex preg-match match preg-match-all

我正在尝试使用正则表达式和pregmatch从网站上删除10位数字。到目前为止还没有得到任何结果。当我使用常规字符时,它匹配前两个注释掉的$ regex变量。但是当我像其他人一样使用正则表达式时。

我在这里检查了所有其他类似的问题。然而,还没有能够理解为什么以下正则表达式脚本输出像

这样的空数组

array(1){[0] => array(0){}}

CODE

<?php 
$data=file_get_contents("http://www.landshoppe.com/contactus");
//$regex = '/9833157945/';
//$regex = "/<a href='(.+?)'>/";
$regex='/^[0-9]\b\d{10}\b$/';

//$regex='/\(?\s?[2-9][0-9]{2}[(\s?\)?\s?)\-\.]{1,3}[0-9]{3}[\s\-\.]{1,3}[0-9]{10}/';
//$regex='/\[^\d\]/';
preg_match_all($regex,$data,$match);
//preg_match_all($regex,"9898989898 kmllkj 9087654567 kjhkhkhj 9043567898 hkhkjhkjhk",$match);
//  var_dump($data);
//  echo htmlspecialchars($data);

var_dump($match); 
echo "<p></p>";
foreach($match as $m){foreach($m as $ma){echo $ma."<br>";}}
//echo $match[1];
?>

如果你观察到,我一直在尝试各种正则表达式组合而没有给出结果。

2 个答案:

答案 0 :(得分:1)

请注意,此表达式:/^[0-9]{5}$/将匹配完全由5位数组成的字符串。 ^$指示引擎从头开始匹配并一直持续到结束。这与/9833157945/的表达式不同,后者表示特定的10位数字。

您需要将其至少更改为\d{10}以匹配10位数。如果数字不能包含在其他字符串中,即foo0123456789,则可以使用\b代码:\b\d{10}\b

答案 1 :(得分:0)

'/ [0-9] \ d {10} /'解决了我的问题!它现在匹配所有10位数字!

谢谢大家。