当前课程知识点:PHP程序设计 > 字符串函数 > 正则表达式 > 正则表达式元字符讲解7
那么我们接着往下说
对吧往下说
还有什么
第四个我们可以取消子模式
我们有些时候括号是可以作为大原子
或者改变优先级使用的
但是你这个括号一带
人家是不是就认为你是子模式了
所以呢
如果说你希望底下这个括号一带
就是当做大原子
或者是改变优先级使用的话
你可以取消怎么取消
对吧
我先把这个取消子模式
为什么要取消写上对吧
就是我们就是把这个括号对吧
作为大原子或者改变优先级使用的时候
那么可以取消它
怎么取消呢
取消就是在括号前面
在括号
应该是在括号中不是在括号前面
是在括号中最前面
就括号一带最前面加上
问号冒号
加上问号冒号就可以取消子模式
就可以取消子模式了
比如说我现在因为这个地方写了个2对吧
因为写了个2
我如果2咱们都看到了刚才是小时分钟秒
我把这个小时分钟秒取消
我问号冒号在括号里面带一个问号冒号
那么它这个怎么是被取消了
那其他的子模式在不在
是不是还在呢
那么这个2现在该显示成谁了
是不是该后面的am|pm了
我们来看一下是不是这样的
看am被取出来了
am被取出来了
所以你可以取消
你可以取消了那它就不是子模式了
对吧
它就不是子模式了
用的就是这个方法对吧用的这个方法
好的
然后最后一个部分对吧
就是关于这个括号使用最后一个部分
最后一个部分是什么呢
可以做反向引用
那么可以在模式中
直接把子模式取出
再作为正则表达式
模式的一部分
那么如果是在正则表达式替换函数里面的话
OK
如果在正则表达式
像替换函数
中可以将子模式
取出再被替换的
的字符串中使用
那么就是这个反向引用是一个什么东西呢
反向引用是什么东西
因为我们这个地方一直在讲匹配
匹配同学们都已经很熟了
所以呢
我就不做这个替换函数了
我们来说一下
我想问一下各位同学
你们觉得咱们现在写的这个
现在写的我现在把这些括号先去掉对吧
我把这个括号先去掉
因为这个是作为那个什么来使用的
我先把括号先去了
最后这个括号去都无所谓
也可以不去
那么我们把括号先去掉
当我们一个括号都没有的时候
后面会有这个arr吗
是不会有的对不对是不会有的
那么自然也不会有这些
我都把它先注释掉
我想说一下
你们觉得咱们现在一起写的这个正则表达式
跟我们的这个东西匹配吗
对不对是匹配的
我们一直在匹配
但是如果用户不这么写呢
如果用户写成这样呢
斜线吧对吧
然后他小时分钟秒也不这样好好写
然后给你写一个别的什么东西
对啊
甚至就是真的来个短信
看起来跟这一样
你说这样子的一个字符串
跟我们现在这个东西匹配吗
你们觉得不匹配
怎么可能不匹配呢
你要知道你的中间的这些符号用的都是谁呀
非字是不是
那这些东西是不是都是非字的
是不是都是非字的对吧
但是你想想看
在网页中
用户这样子写小时分钟秒
那合适吗
你最起码作为一个合格的网页
你一定得给他报个错
告诉他你的时间 日期 格式写的不对
有问题对不对
那很显然非字是不行的
对不对
不是非字不行
我们是不是一定要约定
年和月中间的这个符号
和月和日中间的符号
它们规则应该一致对不对
既然要规则一致
就是我说的
我们应该做一个子模式
刚才已经说了子模式怎么做呢
是不是就是它呀
是不是就是它给它带个括号
给第一个
这是年和月中间给它带个括号
它带个括号之后怎么样再使用呢
我们注意这个地方有一个重要事项
使用的时候
我们是用斜杠来
那么\1就取的是什么
取的是第一个
子模式
然后道\2的时候就取的大家肯定能想到了
是取第二个子模式了对吧
第二个字模式
子模式
但是呢这个地方要注意
你需要注意的是单引号还是双引号引起来的正则
注意单引号还是双引号引起来的
正则表达式
那们咱们看看咱们的表达式是什么
什么东西引起来的
咱们表达式是什么东西啊
是不是双引号
是不是双引号引起来的
如果是双引号的话
你得要怎么写呢
我直接就列在这个地方了
对吧
我直接就列这个地方了
如果是双引号的话
你需要写的是把它换成英文
双引号应该是\\
就是这个取第一个子模式应该写成这个样子
两个\\要做一个转义对吧
那么如果是单引号的话
对吧我再加一点空格
如果是单引号的话
你直接\1就可以了
那么我们现在这个地方
是不是年月日中间的这个横线
我们要求规则一致
既然规则一致
它带了个括号
它自然就是第一个字模式了
那么我们在小时分钟之间的这个大W
我们是不是也给它带个括号
它们的规则是不一样的
因为规则是不一样的
它的这个规则和这个规则也应该一致
那么我们的这个规则在哪个地方呢
是不是原本写的是\w
现在我是双引号取第一个子模式
是不是应该写成这样
所以这个地方改成\\1
那么这是不是它的第二个子模式
你跟它对应的是这个
这个应该写成什么
\\2
如果写成这个样子的话
你再看我们这种样子
能不能匹配成功
匹配直接就失败了
所以这个地方我们就可以很明确的对吧
很明确的就约定出来了
对吧很明确的就可以约定出来了
我们这个地方一定是它的规则
和它的规则要一致
所以这就是子模式的一个反向引用
那么你必须一致了
你必须前面是冒号
后面是冒号
前面是短线
你后面是短线才能够匹配成功
我们来看一眼
匹配成功了对吧
必须一致
当然了你说
我前面如果是\呢
后面是不是也必须得是\
那才可以匹配成功再来看一眼
匹配成功了
总而言之就是这样
它俩必须一致
当然了你说它俩我都写成了一个很奇怪的东西
我都写成这样
根据这个规则是不是还能匹配成功啊
对不对还可以匹配成功的
其实还可以匹配成功
所以呢
但是这种使用对吧
这种使用其实我们做了一定的
就是更增加了一定的一个约束
对吧
这个是关于这个括号里面的这个反向引用
对吧反向引用
好这就是特殊情况下我们可以使用的
我们可以使用的
-PHP概述
-PHP概述--作业
-开发环境搭建
--开发环境搭建一
--开发环境搭建二
--集成环境的安装
-开发环境搭建--作业
-PHP语法入门
--语法入门一
--语法入门二
-PHP数据的输出
--数据输出
-PHP数据类型
--数据类型1
--数据类型2
--数据类型3
--数据类型4
--数据类型5
--数据类型6
-PHP常量和变量
--常量和变量1
--常量和变量2
--常量和变量3
--常量和变量4
--常量和变量5
--常量
-PHP常量和变量--作业
-PHP的运算符和表达式
--运算符和表达式1
--运算符和表达式2
--运算符和表达式3
-PHP语法基础--PHP的运算符和表达式
-条件判断语句
--条件判断语句1
--条件判断语句2
--条件判断语句3
--条件语句
-循环控制语句
--循环控制语句
--循环语句练习1
--循环语句练习2
-跳转语句和终止语句
--跳转和终止语句
-流程控制
-数组概述和分类
--数组概述和分类
--PHP数组分类
-数组创建、删除和修改
--数组创建
-数组遍历
--数组遍历1
--数组遍历2
--数组遍历3
--数组遍历4
--数组遍历5
--foreach
-数组相关函数
--数组相关函数1
--数组相关函数2
--数组相关函数3
--数组相关函数4
--数组相关函数5
--数组相关函数6
--数组函数的练习
-PHP数组--作业
-分页函数的应用
-函数的定义与调用
--函数定义与调用
-函数参数传递
--函数参数传递1
--函数参数传递2
-自定义函数总结和实验
-常用变量和数学函数
--变量和数学函数库
--数学函数实验
--数学函数
-日期和时间函数
--日期时间函数1
--时间日期函数2
--倒计时
-PHP函数--作业
-字符串概述
--字符串特点
--字符串处理方式
-常见的字符串函数
--常见字符串函数1
--输出函数1
--输出函数2
--输出函数3
--去除空白函数1
--去除空白函数2
--去除空白函数3
--其他字符串函数1
--其他字符串函数2
--字符串函数实验1
--字符串函数实验2
--字符串函数实验3
--字符串函数实验4
--字符串练习1
--字符串练习2
--字符串练习3
--字符串练习4
--字符串练习5
--字符串函数
-正则表达式
--正则表达式练习
--正则表达式
-字符串函数--作业
-文件概述和操作
--文件概述和操作1
--文件概述和操作2
-文件的上传和下载
--文件上传1
--文件上传2
--文件上传3
--文件下载
-图像基础
--图像基础1
--图像基础2
-图像基本操作
--图像基本操作1
--图像基本操作2
--图像基本操作3
--图像基本操作4
--图像基本操作5
--图像基本操作6
--表单与验证码的结合
--图像技术练习1
--图像技术练习2
--图像技术练习3
--缩略图
-PHP文件与图像技术-作业
-变色验证码
-会话表单
--会话表单概述1
--会话表单概述2
--会话表单概述3
--超全局变量1
--超全局变量2
--超全局变量3
--表单安全验证
--获取表单数据
-cookie概述
--COOKIE简介
--COOKIE
-session概述
--基本应用1
--基本应用2
-会话管理-作业
-会话管理
-MySQL和PHPMyadmin概述
--MySQL概述1
--MySQL概述2
-PHP访问MySQL
--连接服务器
--选择数据库
--浏览表内容1
--浏览表内容2
--使用mysqli扩展添加数据到数据库中
--使用mysqli扩展删除数据库中数据
--使用mysqli扩展修改数据库中数据
-MySQL扩展的使用
--添加数据页面1
--添加数据页面2
--删除页面1
--删除页面2
--删除页面3
--数据修改页面1
--数据修改页面2
--数据修改页面3
