全面解读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 ...
随机推荐
- Nginx安装目录详解
Nginx安装目录详解 1. 查看有关nginx的所有目录列表,输入命令 rpm -ql nginx 可以查看有关nginx目录信息,但是注意 这种命令只能是在基于yum安装的方式才可以. 2. 下 ...
- [CF 1238F] The Maximum Subtree 树DP
题意 给定一颗树,求这个树的最大子树,且这个子树是一个good-tree. good-tree的定义是:每个节点可以表示成一个数值区间,而树上的边表示两个点表示的数值区间相交. 题解 通过分析可以发现 ...
- eclipse中安装Activiti插件
由于公司网络问题,不能在线安装,下载到本地的插件,安装也是各种问题,后面终于找到能安装的插件包 1.下载eclipse activiti插件包 链接:https://pan.baidu.com/s/1 ...
- maven地址配置为阿里maven仓库,附ali maven官方指南链接
一.参考链接 官方指南 链接地址:https://help.aliyun.com/document_detail/102512.html?spm=a2c40.aliyun_maven_repo.0.0 ...
- C语言/C++知识
<C与指针>pdf 下载: 新浪微盘: https://vdisk.weibo.com/s/A6gkKkHrGH0g
- k8s master节点添加kubectl的使用
- 基于Twemproxy的Redis集群方案(转载)
原文地址:基于Twemproxy的Redis集群方案 概述 由于单台redis服务器的内存管理能力有限,使用过大内存redis服务器的性能急剧下降,且服务器发生故障将直接影响大面积业务.为了获取更好的 ...
- hdu4352 XHXJ's LIS[数位DP套状压DP+LIS$O(nlogn)$]
统计$[L,R]$内LIS长度为$k$的数的个数,$Q \le 10000,L,R < 2^{63}-1,k \le 10$. 首先肯定是数位DP.然后考虑怎么做这个dp.如果把$k$记录到状态 ...
- PowerDesigner 生成SQL Server 2005 注释脚本
--生成数据表的注释EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=[%R%?[N]]%.q:COMMENT% , @l ...
- Bash快捷操作
编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) Ctrl + b :按字符后移(左向) Alt + f :按单词前移(右向) Al ...