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生成缩略图的函数代码(修改版)
Jan 18 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
解析WordPress中控制用户登陆和判断用户登陆的PHP函数
Mar 01 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
实现PHP搜索加分页
Oct 12 PHP
PHP表单验证内容是否为空的实现代码
Nov 14 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
[原创]php实现 data url的图片生成与保存
Dec 04 PHP
简单实现php上传文件功能
Sep 21 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
PHP文件上传实例详解!!!
2007/01/02 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
php导出CSV抽象类实例
2014/09/24 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
10个php函数实用却不常见
2015/10/13 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
基于datagrid框架的查询
2013/04/08 Javascript
Jquery性能优化详解
2014/05/15 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
简单谈谈javascript Date类型
2015/09/06 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
[46:44]VG vs TNC Supermajor小组赛B组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Python 字符串操作方法大全
2014/03/11 Python
Unicode和Python的中文处理
2017/03/19 Python
python负载均衡的简单实现方法
2018/02/04 Python
python3的输入方式及多组输入方法
2018/10/17 Python
python中有关时间日期格式转换问题
2019/12/25 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
团组织关系介绍信
2014/01/12 职场文书
新任教师自我鉴定
2014/02/24 职场文书
2014村务公开实施方案
2014/02/25 职场文书
公路施工安全责任书
2015/05/08 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
高二语文教学反思
2016/02/16 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书