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容易被忽略而出错陷阱 数字与字符串比较
Nov 10 PHP
php使用curl简单抓取远程url的方法
Mar 13 PHP
php查询whois信息的方法
Jun 08 PHP
PHP正则验证Email的方法
Jun 15 PHP
Laravel 中获取上一篇和下一篇数据
Jul 27 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
Laravel框架源码解析之模型Model原理与用法解析
May 14 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 pki加密技术(openssl)详解
2013/07/01 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
js时间比较示例分享(日期比较)
2014/03/05 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
JavaScript模板引擎实现原理实例详解
2018/12/14 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
Python入门篇之字典
2014/10/17 Python
初步解析Python下的多进程编程
2015/04/28 Python
python遍历目录的方法小结
2016/04/28 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
Python中的集合介绍
2019/01/28 Python
python 阶乘累加和的实例
2019/02/01 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
基于matplotlib xticks用法详解
2020/04/16 Python
Python高并发和多线程有什么关系
2020/11/14 Python
python tqdm库的使用
2020/11/30 Python
详解pandas映射与数据转换
2021/01/22 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
《长城》教学反思
2014/02/14 职场文书
双拥工作宣传标语
2014/06/26 职场文书
Mysql中存储引擎的区别及比较
2021/06/04 MySQL