非常重要的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经典的给图片加水印程序
Dec 06 PHP
获得Google PR值的PHP代码
Jan 28 PHP
php 验证码制作(网树注释思想)
Jul 20 PHP
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
Jun 01 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
PHPExcel读取EXCEL中的图片并保存到本地的方法
Feb 14 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
使用PHP生成图片的缩略图的方法
Aug 18 PHP
php is_executable判断给定文件名是否可执行实例
Sep 26 PHP
thinkPHP中配置的读取与C方法详解
Dec 05 PHP
Zend Framework数据库操作方法实例总结
Dec 11 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 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
论坛头像随机变换代码
2006/10/09 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JavaScript中setTimeout和setInterval函数的传参及调用
2016/03/11 Javascript
Javascript的表单验证-初识正则表达式
2016/03/18 Javascript
详解Angular中$cacheFactory缓存的使用
2016/08/19 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
10 种最常见的 Javascript 错误(频率最高)
2018/02/08 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
解决node-sass偶尔安装失败的方法小结
2018/12/05 Javascript
Vue数据绑定简析小结
2019/05/07 Javascript
微信小程序实现发微博功能的示例代码
2020/06/24 Javascript
mac 安装python网络请求包requests方法
2018/06/13 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
利用anaconda作为python的依赖库管理方法
2019/08/13 Python
django实现类似触发器的功能
2019/11/15 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
药学专业大学生自荐信
2013/09/28 职场文书
应聘医药代表职位求职信
2013/10/21 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
MYSQL 的10大经典优化案例场景实战
2021/09/14 MySQL
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP