非常重要的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+mysql留言本源码
Nov 11 PHP
discuz authcode 经典php加密解密函数解析
Jul 12 PHP
不使用php api函数实现数组的交换排序示例
Apr 13 PHP
Linux下PHP加速器APC的安装与配置笔记
Oct 24 PHP
php页面缓存方法小结
Jan 10 PHP
php中curl使用指南
Feb 05 PHP
PHP的全局错误处理详解
Apr 25 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
Jan 20 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 PHP
laravel 解决后端无法获取到前端Post过来的值问题
Oct 22 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作的文本留言本的例子(一)
2006/10/09 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
php+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
PHP获取真实客户端的真实IP
2017/03/07 PHP
jQuery 页面载入进度条实现代码
2009/02/08 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
js 自制滚动条的小例子
2013/03/16 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
jQuery修改CSS伪元素属性的方法
2014/07/30 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
JS正则表达式封装与使用操作示例
2019/05/15 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
vue配置文件实现代理v2版本的方法
2019/06/21 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
2018/04/02 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
Python实现的银行系统模拟程序完整案例
2019/04/12 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
python自动生成证件号的方法示例
2021/01/14 Python
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
Windows和Linux动态库应用异同
2016/07/28 面试题
3D空间设计学生找工作的自我评价
2013/10/28 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
2014年党员公开承诺书范文
2014/03/28 职场文书
观看信仰心得体会
2014/09/04 职场文书
2014教师年度工作总结
2014/11/10 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
2016党员干部政治学习心得体会
2016/01/23 职场文书
mysql5.6主从搭建以及不同步问题详解
2021/12/04 MySQL