php正则表达式学习笔记


Posted in PHP onNovember 13, 2015

php正则表达式学习笔记分享:

1.创建正则表达式

$regex = '/\d/i';
与JavaScript中的第一个方式有点像,只是这里的话是个字符串。

 2.正则表达式中的特殊字符

特殊字符有:   . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

3.正则表达式中的函数

有8个方法,preg_match与preg_match_all,preg_replace与preg_replace_callback,preg_grep、preg_split、preg_last_error和preg_quote。 

preg_match:

执行一个正则表达式匹配

 php正则表达式学习笔记

返回 pattern 的匹配次数。 它的值将是0次(不匹配)或1次,因为preg_match()在第一次匹配后,将会停止搜索

$subject = "dd133aa2";
$pattern = '/\d+/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

上面的示例代码加了参数“PREG_OFFSET_CAPTURE”,这样的话,在$matches中会多一个偏移数。例如下面的“2”

 php正则表达式学习笔记

preg_match_all:

执行一个“全局”正则表达式匹配

 php正则表达式学习笔记

返回完整匹配次数(可能是0),或者如果发生错误返回FALSE。

下面的代码中$subject和$pattern与上面的都一样,唯一不同的是preg_match换成了preg_match_all。

preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

返回的次数是2,匹配到了两次,再看看数组$matches中的输入,有两个。比上面的多了一个。

 php正则表达式学习笔记

 preg_replace:

执行一个正则表达式的搜索和替换

php正则表达式学习笔记

如果subject是一个数组, preg_replace()返回一个数组, 其他情况下返回一个字符串。

如果匹配被查找到,替换后的subject被返回,其他情况下 返回没有改变的 subject。如果发生错误,返回 NULL。

在代码中$subject是一个数组,里面有两组字符串,接下来是将多个数字替换为大写的“Z”。

$subject = array("dd133aa2", "kk1ff3");
$pattern = '/\d+/';
$result = preg_replace($pattern, 'Z', $subject);
print_r($result);

php正则表达式学习笔记

preg_replace_callback:

执行一个正则表达式搜索并且使用一个“回调”进行替换

php正则表达式学习笔记

这个函数的行为除了可以指定一个callback替代replacement进行替换 字符串的计算,其他方面等同于 preg_replace(),包括返回的结果。

下面的代码也是替换成大写的“Z”,回调函数中每次$matches中的内容就是代码中注释的部分,第一次是133,第二次是2。

$subject = "dd133aa2";
$pattern = '/\d+/';
$result = preg_replace_callback($pattern, function($matches) {
    //$matches [0] => 133
    //$matches [0] => 2
    return 'Z';
   }, $subject);
print_r($result);

preg_grep:

返回匹配模式的数组条目

php正则表达式学习笔记

返回使用input中key做索引的数组

下面的示例代码中,在$subject数组中我加了个“ddsdfd”,里面没有包含数字,在做匹配的时候,就把这个没数字的给过滤掉了。

而$result2打印出来的正好相反,是把过滤的打印出来了,但是key还是为2,并不是0。

$subject = array("dd133aa2", "kk1ff3", "ddsdfd");
$pattern = '/\d+/';
$result = preg_grep($pattern, $subject);
$result2 = preg_grep($pattern, $subject, PREG_GREP_INVERT);
print_r($result);
print_r($result2);

php正则表达式学习笔记

preg_split:

通过一个正则表达式分隔字符串

 php正则表达式学习笔记

返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。

下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。

$subject = "dd133aa2cc";
$pattern = '/(\d+)/';
$result = preg_split($pattern, $subject);
$result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
print_r($result2);

php正则表达式学习笔记

preg_last_error:

返回最后一个PCRE正则执行产生的错误代码

preg_match('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar');
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);

preg_quote:

转义正则表达式字符

php正则表达式学习笔记

返回转义后的字符串

下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。

将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”

$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, 'a');
print_r($result);
print_r($result2);

4、模式修正符

php正则表达式学习笔记

以上就是关于php正则表达式的全部内容介绍,希望对大家的学习有所帮助。

PHP 相关文章推荐
PHP语法速查表
Dec 06 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
May 09 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
Jun 25 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
PHP加密函数 Javascript/Js 解密函数
Sep 23 PHP
PHP获取指定函数定义在哪个文件中以及其所在的行号实例
May 08 PHP
php使用explode()函数将字符串拆分成数组的方法
Feb 17 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
PHP获取不了React Native Fecth参数的解决办法
Aug 26 PHP
PHP实现通过CURL上传文件功能示例
May 30 PHP
YII框架行为behaviors用法示例
Apr 26 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
php邮箱地址正则表达式验证
Nov 13 #PHP
合格的PHP程序员必备技能
Nov 13 #PHP
PHP基于yii框架实现生成ICO图标
Nov 13 #PHP
php中session定期自动清理的方法
Nov 12 #PHP
详解php设置session(过期、失效、有效期)
Nov 12 #PHP
php表单提交实例讲解
Nov 12 #PHP
php用户注册信息验证正则表达式
Nov 12 #PHP
You might like
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
PHP开发实现快递查询功能详解
2019/04/08 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
jquery 表单下所有元素的隐藏
2009/07/25 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
Vue 实时监听窗口变化 windowresize的两种方法
2018/11/06 Javascript
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
python模块如何查看
2020/06/16 Python
html5 canvas-2.用canvas制作一个猜字母的小游戏
2013/01/07 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
仓库主管的岗位职责
2013/12/04 职场文书
矫正人员思想汇报
2014/01/08 职场文书
校园歌手大赛策划书
2014/01/17 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
防火标语大全
2014/10/06 职场文书
工伤认定行政答辩状
2015/05/22 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python