非常重要的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调用Oracle存储过程
Oct 09 PHP
遍历指定目录下的所有目录和文件的php代码
Nov 27 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php获取用户浏览器版本的方法
Jan 03 PHP
PHP+shell实现多线程的方法
Jul 01 PHP
7个鲜为人知却非常实用的PHP函数
Jul 01 PHP
php处理单文件、多文件上传代码分享
Aug 24 PHP
PHP使用PDO操作sqlite数据库应用案例
Mar 07 PHP
PHP FileSystem 文件系统常用api整理总结
Jul 12 PHP
关于laravel 日志写入失败问题汇总
Oct 17 PHP
PHP实用小技巧之调用录像的方法
Dec 05 PHP
php修改word的实例方法
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创建基本身份认证站点的方法详解
2013/06/08 PHP
php检测文件编码的方法示例
2014/04/25 PHP
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
jquery ajaxSubmit 异步提交的简单实现
2014/02/28 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
js运动应用实例解析
2015/12/28 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python连接Redis的基本配置方法
2018/09/13 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
2018/11/29 Python
Python3 翻转二叉树的实现
2019/09/30 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
python如何变换环境
2020/07/21 Python
解决python3.x安装numpy成功但import出错的问题
2020/11/17 Python
移动端Html5页面生成图片解决方案
2018/08/07 HTML / CSS
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
经济管理专业毕业生推荐信
2013/11/11 职场文书
电脑教师的自我评价
2013/12/18 职场文书
法制宣传实施方案
2014/03/13 职场文书
二手房买卖协议书
2014/04/10 职场文书
班主任对学生的评语
2014/04/26 职场文书
建筑横幅标语
2014/10/09 职场文书
跑出一片天观后感
2015/06/08 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
一次SQL如何查重及去重的实战记录
2022/03/13 MySQL
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python