全面解读php-正则表达式
一、正则表达式基础内容

注:
1、通用原子:
- \d : 数字。 \D : 除了数字。
- \w : 数字,字母,下划线。\W : 除了数字,字母,下划线。
- \s : 空白符 。 \S : 除了空白符 。
2、元字符:
- . :除了换行以外的所有字符
- * : 匹配前面的内容出现 0 次及以上。
- ? : 匹配前面的内容出现 0 次或 1 次。
- + : 出现一次或多次。
- ^ : 必须以它开头。
- $ : 必须以它结尾。
- {n} : 恰巧出现 n 次。
- {n,} : 大于等于 n 次。
- {n,m} : 大于等于 n, 小于等于 m.
- [] : 是一个集合,匹配中括号中的任意一个字符,如:[abc]即为匹配a或b或者c。
- () : 后项引用 或者是当做一个整体。
- [^]: 取反。
- | : 或者
- [-] : 代表一个范围,如[0-9],匹配即为 0123456789
3、模式修正符
- i:不区分大小写。
- m:将字符串通过分隔符进行分割,将字符串中的每一行分别进行匹配。
- e: 将匹配出来的内容做一些php语法上的处理。
- s: 修正 "." 的换行。
- U: 取消贪婪模式。
- x: 忽略模式中的空白符。
- A: 必须以这个模式开头。
- D: 修正 "$" 对 "\n" 的忽略。
- u: 做 utf-8 中文匹配的时候使用。
- g:该表达式可以进行全局匹配。
示例:
现在需要正则验证一个input框,我想输入的是非整数就自动变成空值。
正则如下;
# 不加入/g,则只返回第一个匹配,无论执行多少次均是如此,如果加入g,则第一次执行也返回第一个匹配,再执行返回第二个匹配,依次类推。
#/[^0-9]/g,这个正则表达式的意思是全局匹配非数字类型和非-的字符。 /[^0-9|-]/g
匹配到该正则后,就将input的值置空即可。
二、后项引用

如果想只去除掉b标签,只保留里面的字符串,这里就需要用到后项引用。怎么样后项引用呢,就是将 .* 括起来,然后在匹配的时候,写上 \1 ,\1 代表第一个括号里面匹配到的内容,当然为了防止 \ 将 1 转义掉,所以我们使用 \\1 .
三、贪婪模式

我们这是想匹配到每一个 b 标签,即<b>abc</b> 和 <b>bcd</b>,
//如果使用下面的正则来匹配的话,会匹配出<b>abc</b><b>bcd</b>.
$pattern = '/<b>.*<\/b>/';
所以此处我们要使用 .*?来取消贪婪,?代表匹配前面的内容 0 次或者 1次。
//正则表达式改为
$pattern = '/<b>.*?</b>/';
//当然取消贪婪还有一种写法:就是在后面加上一个 U ,即:
$pattern = '/<b>.*</b>/U';
但是切记不能 .*? 和 U 一起用。
四、延伸重点
1、常见PCRE函数

2、中文匹配

示例:
$str = '中文';
a、使用utf-8匹配中文:
$pattern = '/[\x{4e00}-\x{9fa5}]+/u';
b、使用GB2312匹配中文:
$pattern = '/[' . chr(0xb0) . '-' . chr(0xf7) . '][' .chr(0xa1) . '-' . chr(0xfe) .']/';
preg_match($pattern, $str, $match);

3、写正则表达式的思路

4、示例:

本文为袋鼠学习中的总结,如有转载请注明出处:https://www.cnblogs.com/chrdai/p/11100233.html
全面解读php-正则表达式的更多相关文章
- 解读邮箱正则表达式:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
转自:http://www.cnblogs.com/joyceTING/archive/2013/05/09/3069089.html正则表达式 \w+([-+.]\w+)*@\w+([-.]\w+) ...
- 解读C#中的正则表达式
本文摘自LTP.NET知识库. regexp规则类包含在System.Text.RegularExpressions.dll文件中,在对应用软件进行编译时你必须引用这个文件: System.Text. ...
- 正则表达式 \w \d 的相关解读
在查阅很多相关正则的描述之后,发现对于\w 的释义都是指包含大 小写字母数字和下划线 相当于([0-9a-zA-Z]) (取材于经典教程 正则表达式30分钟入门教程) 但是在实际使用中发现并不是这么回 ...
- 解读ASP.NET 5 & MVC6系列(11):Routing路由
新版Routing功能介绍 在ASP.NET 5和MVC6中,Routing功能被全部重写了,虽然用法有些类似,但和之前的Routing原理完全不太一样了,该Routing框架不仅可以支持MVC和We ...
- [转]FINDSTR正则表达式小结
前言:最近写了一个bat用于快速编译swf至目标目录,想利用FINDSTR命令通过匹配目标目录名称,匹配数量大概600多个,发现匹配耗时比较久,大概花费10余秒,因此还是放弃字符匹配,乖乖拼出全称来定 ...
- 不一样的角度 解读微信小程序
不一样的角度 解读微信小程序 七月在夏天· 2 天前 前段时间看完了雨果奖中短篇获奖小说<北京折叠>.很有意思的是,张小龙最近也要把应用折叠到微信里,这些应用被他称为:小程序. 含着金钥匙 ...
- Mustache.js前端模板引擎源码解读
mustache是一个很轻的前端模板引擎,因为之前接手的项目用了这个模板引擎,自己就也继续用了一会觉得还不错,最近项目相对没那么忙,于是就抽了点时间看了一下这个的源码.源码很少,也就只有六百多行,所以 ...
- seajs 源码解读
之前面试时老问一个问题seajs 是怎么加载js 文件的 在网上找一些资料,觉得这个写的不错就转载了,记录一下,也学习一下 seajs 源码解读 seajs 简单介绍 seajs是前端应用模块化开发的 ...
- CMakeLists实战解读--YouCompleteMe
原文转载自:Ricky.K http://www.cnblogs.com/rickyk/p/3877238.html 个人一直有一个想法,就是想出一系列关于CMakeLists.txt国外经典例子的实 ...
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...
随机推荐
- C# 之 String.Empty
.NET Framework 类库,表示空字符串,此字段为只读,命名空间:System.程序集:mscorlib(在 mscorlib.dll 中). EG:protected string lo ...
- fiddler4自动生成jmeter脚本
接口.性能测试任务当遇到从浏览器或移动app自己抓包的情况出现时就变得巨苦逼了,苦在哪里?苦在需要通过抓包工具抓报文,需要通过抓包报文梳理业务逻辑.需要将梳理的逻辑编写成脚本.最最苦的情况是,自己抓包 ...
- 亲爱的SAP从业者们,烦请做个SAP知识学习种类的小调查
"世上再也没有比时钟更加冷漠的东西了:在您出生的那一刻,在您尽情地摘取青春幻梦的花朵的时刻,它都是同样分秒不差地滴答着." -- 高尔基 2019年马上又要离我们而去了,从2018 ...
- tcpdump工具抓到的cap文件
一.链路层 ---> 以太网数据包 一个数据包被称为一帧, 制定这个规则的协议就是以太网协议.一个完整的以太网数据包如下图所示: 整个数据帧由首部.数据和尾部三部分组成,首部固定为14个字节 ...
- chomd添加权限
chmod 777 -R * 的意思是把当前目录所有文件(递归的)的属性全部为7
- 基于MaxCompute InformationSchema进行血缘关系分析
一.需求场景分析 在实际的数据平台运营管理过程中,数据表的规模往往随着更多业务数据的接入以及数据应用的建设而逐渐增长到非常大的规模,数据管理人员往往希望能够利用元数据的分析来更好地掌握不同数据表的血缘 ...
- AcWing:245. 你能回答这些问题吗(线段树最大子段和)
给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1.“1 x y”,查询区间 [x,y] 中的最大连续子段和,即 maxx≤l≤r≤ymaxx≤l≤r≤y{∑ri=lA[i]∑i=l ...
- Aragorn's Story
A - Aragorn's Story 直接套 线段树+树剖 板子 代码: // Created by CAD on 2019/8/12. #include <bits/stdc++.h> ...
- D. Marcin and Training Camp
D. Marcin and Training Camp 题目链接:http://codeforces.com/contest/1230/problem/D time limit per test: 3 ...
- eclipse内存溢出 参数配置
http://blog.csdn.net/liuhenghui5201/article/details/50783444