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 相关文章推荐
一个程序下载的管理程序(一)
Oct 09 PHP
Breeze 文章管理系统 v1.0.0正式发布
Dec 14 PHP
用mysql触发器自动更新memcache的实现代码
Oct 11 PHP
php中取得文件的后缀名?
Feb 20 PHP
PHP判断是否有Get参数的方法
May 05 PHP
PHP中Session可能会引起并发问题
Jun 26 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
Dec 20 PHP
win10环境PHP 7 安装配置【教程】
May 09 PHP
PHP实现数据四舍五入的方法小结【4种方法】
Mar 27 PHP
php array 转json及java 转换 json数据格式操作示例
Nov 13 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 PHP
PHP如何使用cURL实现Get和Post请求
Jul 11 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
第七节 类的静态成员 [7]
2006/10/09 PHP
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
优化使用mysql存储session的php代码
2008/01/10 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
JS实现的页面自定义滚动条效果
2015/10/26 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
node.js基础知识小结
2018/02/26 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
2020/01/08 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
详解Vue之计算属性
2020/06/20 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python下os模块强大的重命名方法renames详解
2017/03/07 Python
Python中音频处理库pydub的使用教程
2017/06/07 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
Django密码存储策略分析
2020/01/09 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
python如何快速生成时间戳
2020/07/21 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
Python之Sklearn使用入门教程
2021/02/19 Python
HTML5本地存储之IndexedDB
2017/06/16 HTML / CSS
优秀教师工作感言
2014/02/16 职场文书
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
《这片土地是神圣的》教学反思
2016/02/16 职场文书
MySQL命令无法输入中文问题的解决方式
2021/08/30 MySQL
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js