非常重要的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 相关文章推荐
Windows下PHP5和Apache的安装与配置
Sep 05 PHP
PHP脚本的10个技巧(6)
Oct 09 PHP
加强版phplib的DB类
Mar 31 PHP
生成php程序的php代码
Apr 07 PHP
PHP中输出转义JavaScript代码的实现代码
Apr 22 PHP
PHP实现阳历到农历转换的类实例
Mar 07 PHP
php返回字符串中所有单词的方法
Mar 09 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
浅析PHP7的多进程及实例源码
Apr 14 PHP
PHP 实现 WebSocket 协议原理与应用详解
Apr 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强制更新图片缓存的方法
2015/02/11 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
Javascript学习笔记5 类和对象
2010/01/11 Javascript
Javascript创建Silverlight Plugin以及自定义nonSilverlight和lowSilverlight样式
2010/06/28 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
从零开始学习Node.js系列教程之基于connect和express框架的多页面实现数学运算示例
2017/04/13 Javascript
BootStrap表单时间选择器详解
2017/05/09 Javascript
Bootstrap4 gulp 配置详解
2019/01/06 Javascript
react的滑动图片验证码组件的示例代码
2019/02/27 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
jquery制作的移动端购物车效果完整示例
2020/02/24 jQuery
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
Tensorflow实现卷积神经网络用于人脸关键点识别
2018/03/05 Python
python制作抖音代码舞
2019/04/07 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
python爬虫可以爬什么
2020/06/16 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
学校联谊活动方案
2014/02/15 职场文书
中学清明节活动总结
2014/07/04 职场文书
机械机修工岗位职责
2014/08/03 职场文书
经济贸易系求职信
2014/08/04 职场文书
安全生产年活动总结
2014/08/29 职场文书
软环境建设心得体会
2014/09/09 职场文书
我的中国梦主题班会
2015/08/14 职场文书
如何才能写好调研报告?
2019/07/03 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang
分享一些Java的常用工具
2021/06/11 Java/Android
微信小程序 根据不同用户切换不同TabBar
2022/04/21 Javascript
MYSQL如何查看操作日志详解
2022/05/30 MySQL