第21章 PHP 正则表达式 实战案例

一、补齐第20章空白示例

  1. 判断是否全为数字

php

$str = '123456';
$preg = '/^\d+$/';
if(preg_match($preg,$str)){
echo '全是数字';
}else{
echo '包含非数字';
}
 

  1. 手机号简单校验(11位数字)

php

$phone = '13812345678';
$preg = '/^\d{11}$/';
preg_match($preg,$phone,$res);
var_dump($res);
 

  1. 正则替换示例

php

// 把字符串中所有数字替换为
$str = '会员编号:8899,积分:668';
$newStr = preg_replace('/\d/','
',$str);
echo $newStr;
 

二、常用正则扩展元字符

  •  [0-9]  等价  \d  数字
  •  [a-zA-Z]  匹配大小写字母
  •  |  多选分支 例: a|b  匹配a或b
  •  ()  分组,单独捕获匹配内容
  •  \D  非数字、 \W  非单词字符、 \S  非空白

三、实战常用规则

1. 用户名:4-16位字母数字下划线
 /^\w{4,16}$/ 
2. 邮箱基础格式
 /^\w+@\w+.\w+$/ 
3. 严格手机号(1开头11位)
 /^1\d{10}$/ 

四、preg_match_all 全局匹配用法

php

// 提取字符串中所有数字
$str = '订单1001,金额299,数量5';
preg_match_all('/\d+/',$str,$arr);
print_r($arr);
 

五、易错点总结

1. PHP正则必须带定界符  // ,不能直接写 ^\d+$ 
2. 不加 ^ $ 会模糊匹配,只要包含就通过
3.  . 默认不匹配换行,多行匹配需加修饰符
4. 优先用 preg_ 系列,不要用ereg旧函数
【瓜分奖池】PHP基础第二十一章 第5张插图