/*
给定一组手机号,必须由[01235689]组成的,才选出来从哪儿找?
从字符串的开始找,找到字符串的结束^ $找谁[01235689]找几个?
11个
*/
$arr = array('13824234323','13426321756','123456','1845349634789097');
// 匹配出11位数的号码
$patt = '/^[0123456789]{11}$/';
// 格式 '/^ $/'
foreach($arr as $k => $v) {
preg_match_all($patt,$v,$rce);
var_dump($rce);
}
/*
array (size=1)
0 =>
array (size=1)
0 => string '13824234323' (length=11)
array (size=1)
0 =>
array (size=1)
0 => string '13426321756' (length=11)
array (size=1)
0 =>
array (size=0)
empty
array (size=1)
0 =>
array (size=0)
empty
*/
$str = '老王,买的发色积分,联系13800138000,备用电话18934235322,么么号442313421213253';
$patt = '/1[3587]\d{9}/';
preg_match_all($patt,$str,$res);
var_dump($res);
/*
array (size=1)
0 =>
array (size=3)
0 => string '13800138000' (length=11)
1 => string '18934235322' (length=11)
2 => string '13421213253' (length=11)
*/
连不是手机号的也找出来了
$str = '老王,买的发色积分,联系13800138000,备用电话18934235322,么么号442313421213253';
$patt = '/^1[3587]\d{9}$/';
preg_match_all($patt,$str,$res);
var_dump($res);
/*
array (size=1)
0 =>
array (size=0)
empty
*/
一个都找不到因为:
联系13800138000 开头是联系
备用电话同理
$str = '老王,买的发色积分,联系13800138000,备用电话18934235322,么么号442313421213253';
$patt = '/\b1[3587]\d{9}\b/';
preg_match_all($patt,$str,$res);
var_dump($res);
/*
array (size=1)
0 =>
array (size=2)
0 => string '13800138000' (length=11)
1 => string '18934235322' (length=11)
*/
单词开头结尾的匹配
对中文不认识