繁体   English   中英

preg_match与正则表达式不匹配

[英]preg_match does not match regex

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

我在这里检查了所有其他类似的问题。 但是还无法理解为什么以下正则表达式脚本会输出空数组,例如

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

<?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];
?>

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

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

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

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

谢谢大家

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM