全面解读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 ...
随机推荐
- Linux Exploit系列之六 绕过ASLR - 第一部分
绕过ASLR - 第一部分 什么是 ASLR? 地址空间布局随机化(ASLR)是随机化的利用缓解技术: 堆栈地址 堆地址 共享库地址 一旦上述地址被随机化,特别是当共享库地址被随机化时,我们采取的绕过 ...
- JetBrains IDEA Web开发简单配置
很早前因为使用了一年的MyEclipse,不想更换其他的IDE工具,是因为各项配置,以及快捷键等.前段时间更换了IDEA工具,初步了解了一些功能,包括快捷,调试,配置,都很优于MyEclipse.但是 ...
- 关于Vue-$router传参出现刷新页面或者返回页面丢失数据的问题
也算是踩到坑了,但不是我踩到的,不过还是得说下这个问题,很严重,对于小白和初学者是比较有帮助的,如果使用到路由传参,请选择你想要的传参方式params或者query 1.query this.$rou ...
- IANA
IANA,全称The Internet Assigned Numbers Authority,即互联网数字分配机构1. Internet已成为全球范围的网络.为保证其正常运作,全球有很多机构参与进来. ...
- shell更改xml中的指定值
sed -i 's;<id>.*<\/id>;<id>新内容<\/id>;g' your.xml
- POJ3311Hie with the Pie(floyd传递+DP,状态压缩)
问题 The Pizazz Pizzeria prides itself in delivering pizzas to its customers as fast as possible. Unfo ...
- Spring资源
资源 官网:http://spring.io 文档:https://docs.spring.io/spring/docs/current/spring-framework-reference/.htt ...
- iOS设置UITableViewCell的选中时的颜色
1.系统默认的颜色设置 //无色 cell.selectionStyle = UITableViewCellSelectionStyleNone; //蓝色 cell.selectio ...
- 手动解析网易云音乐MP3真实地址
火狐打开音乐播放页面 然后按F12 点击网络选项卡 点击音乐播放按钮 然后过滤输入“url” 选中筛选出来的结果 点击右边的相应选项卡 下面的url里面就是真实的预约MP3地址
- 无法将 DBNull.Value 强制转换为类型“System.DateTime”。请使用可空类型
取数据库中的数据时,数据库中的字段有可能是空值,虽然Linq中的Field方法和SetField方法都可以处理可以为 null 的类型,不必像前面的示例那样检查 Null 值,我们再用Field将一些 ...