PHP下常用正则表达式整理


Posted in PHP onOctober 26, 2010

--------------------------------------------------------- 正则收藏

手机号码:
$mode = "/^1[358]\d{9}/";

邮箱地址:
$mode = "/^[a-z][-_\.]?[a-z\d]*@[a-z0-9]+[\.][a-z]{2,4}/i";

---------------------------------------------------------- 正则基础

$mode = "/^1[358]\d{9}/i";
匹配模块必须以 / / 开始和结束,第二个 / 后可以加模式修正符

原子
①a-z A-Z _ 0-9 //最常见的字符
②(abc) //用圆括号括起来起来的单元符号
③[abcs] [^abd] //用方括号括起来的原子表,
原子表中的^代表排除或相反内容

\d 包含所有数字[0-9]
\D 除所有数字外[^0-9]
\w 包含所有英文字符[a-zA-Z_0-9]
\W 除所有英文字符外[^a-zA-Z_0-9]
\s 包含空白区域如回车、换行、分页等 [\f\n\r]

元字符
* 匹配前一个内容的0次1次或多次
+ 1次或多次
? 0次或1次
. 代表任意一个字符(除了回车换行)
| 相当与php的 || (“或”的意思)
^ 强制匹配字符串首部内容
$ 强制匹配字符串尾部内容
[^abc] 匹配除了a或b或c之外的内容
\b 匹配单词边界,边界可以是空格或者特殊符号
\B 匹配除带单词边界以外的内容
{m} 匹配前一个内容的重复次数为M次
{m,} 匹配前一个内容的重复次数大于等于M次
{m,n} 匹配前一个内容的重复次数M次到N次
( ) 整体匹配,并放入内存,可使用\\1 或 \\2 …依次获取

优先级:依次降低
( ) 圆括号因为是内存处理所以最高
* ? + { } 重复匹配内容其次
^ $ \b 边界处理第三
| 条件处理第四
最后按照运算顺序计算匹配

常用修正符: $mode = "/正则/U";
i 正则内容在匹配时候不区分大小写(默认是区分的)
m 在匹配首内容或者尾内容时候采用多行识别匹配
S 将回车转化为空格
x 忽略正则中的空白
A 强制从头开始匹配
D 强制$匹配尾部无任何内容 \n
U 禁止贪婪匹配,只跟踪到最近的一个匹配符并结束,
常用在采集程序上的正则表达式

应用
preg_match_all ( string pattern, string subject, array matches [, int flags] )
截取比较详细的内容,采集网页,分析文本
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit] )
提示 1、替换内容可以是一个正则也可以是数组正则
2、替换内容可以通过修正符e来解决替换执行内容
preg_split ( string pattern, string subject [, int limit [, int flags]] )
通过正则表达式来切割相关内容,类似之前学过的explode切割函数,但explode
只能按照一种方式切割有局限性。
------------------------------------------------- 调试代码
[code]
<?php
$mode = "/^[a-z][-_\.]?[a-z\d]*@[a-z0-9]+[\.][a-z]{2,4}/i";
$str = "a12345@3water.com";
echo $str.'<hr>';
if(preg_match($mode, $str, $arr)){
echo 'succeed -- <font color=red>'.$arr[0];
}else{
echo 'failed';
}
?>
[code]

PHP 相关文章推荐
php 不同编码下的字符串长度区分
Sep 26 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
CodeIgniter框架数据库事务处理的设计缺陷和解决方案
Jul 25 PHP
PHP编译安装中遇到的两个错误和解决方法
Aug 20 PHP
php实现通用的信用卡验证类
Mar 24 PHP
PHP版本的选择5.2.17 5.3.27 5.3.28 5.4 5.5兼容性问题分析
Apr 04 PHP
Zend Framework数据库操作技巧总结
Feb 18 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
Jun 06 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
Oct 25 #PHP
微盾PHP脚本加密专家php解密算法
Sep 13 #PHP
smarty中先strip_tags过滤html标签后truncate截取文章运用
Oct 25 #PHP
php正则过滤html标签、空格、换行符的代码(附说明)
Oct 25 #PHP
PHP 强制下载文件代码
Oct 24 #PHP
php下网站防IP攻击代码,超级实用
Oct 24 #PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 #PHP
You might like
《心理测量者3》剧场版动画预告
2020/03/02 日漫
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
js倒计时抢购实例
2015/12/20 Javascript
JS面向对象编程详解
2016/03/06 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
AngularJS基础 ng-click 指令示例代码
2016/08/01 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
Vue.js仿Select下拉框效果
2020/02/18 Javascript
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python高级特性切片(Slice)操作详解
2018/09/27 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
Ubuntu下Python+Flask分分钟搭建自己的服务器教程
2019/11/19 Python
Python zip函数打包元素实例解析
2019/12/11 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
机械专业毕业生自荐信
2013/11/02 职场文书
大学生创业计划书的格式要求
2013/12/29 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
离婚协议书的范本
2015/01/27 职场文书
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers