非常重要的php正则表达式详解


Posted in PHP onJanuary 04, 2016

 正则表达式是php中一个非常重要的知识点,通常用来查找和替换字符串,最常用的就是验证用户输入的信息格式是否正确,如邮件格式、电话格式等等。还有比如采集器之类的软件中,正则也是必用不可!
  现在开始来学习正则表达式的基本语法:
1.“/”是定界符,“/”定界符之间的部分就是将要在目标对象中进行匹配的模式。同时为了正则更加灵活,引入了元字符,即“+”, “*”,以及 “?”。
(1)“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次
比如:/php+/,能够与“phpp”匹配,即字母ph后面连续出现一个或多个字母p的字符串相匹配。
(2)“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次
比如:/php*/能够与“phpddt”相匹配,即ph后面可以有0个或多个p
(3)“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。
比如:/php?/能够“pher”匹配,即phh后面可以有0个或者1个p
其他重要的元字符:

  • \s:用于匹配单个空格符,包括tab键和换行符;
  • \S:用于匹配除单个空格符之外的所有字符;
  • \d:用于匹配从0到9的数字;
  • \w:用于匹配字母,数字或下划线字符;
  • \W:用于匹配所有与\w不匹配的字符;
  • . :用于匹配除换行符之外的所有字符。

示例:/\s+/用于匹配目标对象中的一个或多个空格字符
2.定位符用于规定匹配模式在目标对象中的出现位置。常用的有“^”, “$”, “\b” 以及 “\B”
(1)“^”定位符规定匹配模式必须出现在目标字符串的开头
(2)“$”定位符规定匹配模式必须出现在目标对象的结尾
(3)\b定位符规定匹配模式必须出现在目标字符串的开头或结尾的两个边界之一
(4)“\B”定位符则规定匹配对象必须位于目标字符串的开头和结尾两个边界之内
3.php的正则匹配模式非常灵活,可以指定某一范围 
例如:
/[A-Z]/
上述正则表达式将会与从A到Z范围内任何一个大写字母相匹配。
/[a-z]/
上述正则表达式将会与从a到z范围内任何一个小写字母相匹配。
/[0-9]/
上述正则表达式将会与从0到9范围内任何一个数字相匹配。
/([a-z][A-Z][0-9])+/
上述正则表达式将会与任何由字母和数字组成的字符串
4.可以同时与多种模式选择匹配
如/phpddt.com|phpddt|100/可以与“phpddt.com” “phpddt” “100”相匹配
5.否定符 “[^]”规定目标对象中不能存在模式中所规定的字符串
例如:[^phpddt]匹配除了phpddt字符外的所有东西
下面来讲讲正则表达式常用函数吧!(非常重要)

<?php 
//preg_match("正则表达式","字符串")用于在字符串中查找匹配项 
$email = "987044391@qq.com"; 
if (preg_match("/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([.a-zA-Z0-9_-])+([.a-zA-Z0-9_-]+)+([.a-zA-Z0-9_-])$/",$email)){ 
 echo '匹配成功<hr />'; 
}else { 
 echo '匹配失败<hr />'; 
} 
//preg_quote("字符串") 在每个有正则表达式语法前面加入一个转义字符即\ 
 
$str = "php点点通是一个学习php的网站,(⊙o⊙)…"; 
echo preg_quote($str); 
echo "<hr />"; 
 
//preg_split("正则","字符串")分割字符串 
$php = "+php++点点通++++是好网站"; 
$field = preg_split("/\+{1,}/",$php); 
foreach($field as $f){ 
echo $f." "; 
} 
echo "<hr />"; 
//preg_grep("正则","字符串") 与数组匹配后返回新数组 
$phpddt = array("php点点通","php100","呵呵","hahaha","phpchina"); 
$item = preg_grep("/^php/",$phpddt); 
print_r($item); 
 
echo "<hr />"; 
//preg_replace("正则","替换内容","原字符串") 很重要,很常用 
$a = "欢迎光临https://3water.com/"; //给http开头的加上超链接 
echo preg_replace("/http:\/\/(.*)\//","<a href=\"\${0}\">\${0}</a>","$a"); 
?>

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

PHP 相关文章推荐
php正则表达匹配中文问题分析小结
Mar 25 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
PHP动态编译出现Cannot find autoconf的解决方法
Nov 05 PHP
10个超级有用的PHP代码片段果断收藏
Sep 23 PHP
Yii2实现log输出到file及database的方法
Nov 12 PHP
PHP最常用的正则表达式
Feb 13 PHP
Yii2中简单的场景使用介绍
Jun 02 PHP
php实现映射操作实例详解
Oct 02 PHP
TP5框架安全机制实例分析
Apr 05 PHP
php实例化对象的实例方法
Nov 17 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
Jan 04 #PHP
隐藏Nginx或Apache以及PHP的版本号的方法
Jan 03 #PHP
PHP 读取文本文件内容并分页显示
Jan 02 #PHP
php实现概率性随机抽奖代码
Jan 02 #PHP
php实现给一张图片加上水印效果
Jan 02 #PHP
前端必学之PHP语法基础
Jan 01 #PHP
WordPress中登陆后关闭登陆页面及设置用户不可见栏目
Dec 31 #PHP
You might like
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
IScroll5实现下拉刷新上拉加载的功能实例
2017/08/11 Javascript
vue实现前进刷新后退不刷新效果
2018/01/26 Javascript
JavaScript高级函数应用之分时函数实例分析
2018/08/03 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
js验证账户名是否重复
2020/05/26 Javascript
Ruby元编程基础学习笔记整理
2016/07/02 Python
Python requests发送post请求的一些疑点
2018/05/20 Python
Python3基于sax解析xml操作示例
2018/05/22 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
原生python实现knn分类算法
2019/10/24 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
django中ImageField的使用详解
2020/12/21 Python
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
Java TransactionAPI (JTA) 主要包含几部分
2012/12/07 面试题
工厂总经理岗位职责
2014/02/07 职场文书
小学生寒假家长评语
2014/04/16 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
升职自荐信怎么写
2015/03/05 职场文书
博士导师推荐信
2015/03/25 职场文书
mysql 排序失效
2022/05/20 MySQL