首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
字符串的单引号和双引号
字符串的连接符
手动和自动转义字符串中的字符
计算字符串的长度
字符串单词统计
清理字符串中的空格
字符串的切分与组合
字符串子串的截取
字符串子串替换
字符串查找
字符串大小写转换
字符串处理机制的修改
正则表达式概述
正则表达式的语法规则
使用正则表达式替换字符串子串
使用正则表达式切分字符串
实战演练——酒店系统在线订房表
PHP数组概述
构造一维数组
构造多维数组
遍历数组
数组排序
字符串与数组的转换
向数组中添加和删除元素
查询数组中的指定元素
统计数组元素个数
删除数组中的重复元素
调换数组中的键值和元素值
PHP 8的新变化1—自动创建元素的顺序的改变
PHP 8的新变化2—list()函数修改数组的改变
PHP 8的新变化3—foreach()函数修改数组的改变
实战演练—序列化和反序列化
当前位置:
首页>>
技术小册>>
PHP8入门与项目实战(3)
小册名称:PHP8入门与项目实战(3)
一般情况下,正则表达式由两部分组成,分别是元字符和文本字符。元字符就是具有特殊含义的字符,例如“?”和“*”等,文本字符就是普通的文本,例如字母和数字等。本节主要讲解正则表达式的语法规则。 1.方括号([ ]) 方括号内的一串字符是将要用来进行匹配的字符。例如,正则表达式在方括号内的[name]是指在目标字符串中寻找字母n、a、m、e。[jjk]表示在目标字符串中寻找字符j和k。 2.连字符(-) 在很多情况下,不可能逐个列出所有字符。比如,若要匹配所有英文字符,则把26个英文字母全部输入会十分麻烦。这样就有如下表示: ·[a-z]:表示匹配英文字母小写从a到z的任意字符。 ·[A-Z]:表示匹配英文字母大写从A到Z的任意字符。 ·[A-Za-z]:表示匹配英文字母大小写从大写A到小写z的任意字符。 ·[0-9]:表示匹配从0到9的任意十进制数。 由于字母和数字的区间固定,因此根据这样的表示方法,即[开始-结束],程序员可以重新定义区间大小,如[2-7]、[c-f]等。 3.点号字符(.) 点号字符在正则表达式中是一个通配符,代表所有字符和数字。例如,“.er”表示所有以er结尾的三个字符的字符串,可以是per、ser、ter、@er、&er等。 4.限定符(+*?{n,m}) ·加号“+”:表示其前面的字符至少有一个。例如,“9+”表示目标字符串包含至少一个9。 ·星号“*”:表示其前面的字符不止一个或零个。例如,“y*”表示目标字符串包含零或不止一个y。 ·问号“?”:表示其前面的字符为一个或零个。例如,“y?”表示目标字符串包含零或一个y。 ·大括号“{n,m}”:表示其前面的字符有n或m个。例如,“a{3,5}”表示目标字符串包含3个或5个a。“a{3}”表示目标字符串包含3个a。“a{3,}”表示目标字符串至少包含3个a。 点号和星号可以一起使用,如“.*”表示匹配任意字符。 5.行定位符(^和$) 行定位符用来确定匹配字符串所要出现的位置。 如果是在目标字符串开头出现,就使用符号“^”;如果是在目标字符串结尾出现,就使用符号“$”。例如,^xiaoming是指xiaoming只能出现在目标字符串开头,8895$是指8895只能出现在目标字符串结尾。 可以同时使用这两个符号,如“^[a-z]$”,表示目标字符串只包含从a到z的单个字符。 6.排除字符([^]) 符号“^”在方括号内所代表的意义则完全不同,表示一个逻辑“否”,排除匹配字符串在目标字符串中出现的可能。例如,[^0-9]表示目标字符串包含从0到9“以外”的任意其他字符。 7.括号字符(( )) 括号字符表示子串,所有对包含在子串内字符的操作都是以子串为整体进行的。括号字符也是把正则表达式分成不同部分的操作符。 8.选择字符(|) 选择字符表示“或”选择。例如,“com|cn|com.cn|net”表示目标字符串包含com或cn或com.cn或net。 9.转义字符(\)与反斜线(\) 由于“\”在正则表达式中属于特殊字符,如果单独使用此字符,就直接表示作为特殊字符的转义字符。如果要表示反斜杠字符本身,就在此字符前添加转义字符“\”,即“\\”。 10.认证Email的正则表达式 在处理表单数据的时候,对用户的Email进行认证是十分常用的。可以使用正则表达式匹配来判断用户输入的是否为一个Email地址。它的格式如下。 ```php ^[A-Za-z0-9_.]+@[ A-Za-z0-9_]+\.[ A-Za-z0-9.]+$ ``` 其中^[A-Za-z0-9_.]+表示至少有一个英文大小写字符、数字、下划线、点号或者这些字符的组合。@表示Email中的“@”。[ A-Za-z0-9_]+表示至少有一个英文大小写字符、数字、下划线或者这些字符的组合。\.表示email中“.com”之类的点。由于这里点号只是点本身,因此用反斜杠对它进行转义。[ A-Za-z0-9.]+$表示至少有一个英文大小写字符、数字、点号或者这些字符的组合,并且直到这个字符串的末尾。 11.如何使用正则表达式对字符串进行匹配 用正则表达式对目标字符串进行匹配是正则表达式的主要功能。 完成这个操作需要用到preg_match()函数。这个函数是在目标字符串中寻找符合特定正则表达式规范的字符串子串。根据指定的模式来匹配文件名或字符串。它的语法格式如下: ```php preg_match(正则表达式, 目标字符串,[ 数组]) ``` 下面介绍利用正则表达式规范匹配email输入的方法和技巧。 【例5.14】 ```php <?php $email = "wangxioaming2011@hotmail.com"; //定义字符串 $email2 = "The email is liuxiaoshuai_2011@hotmail.com"; $asemail = "This is wangxioaming2011@hotmail"; $regex ='/^[a-zA-Z0-9_.]+@[a-zA-Z0-9_]+\.[a-zA-Z0-9.]+$/';//定义正则表达式规范 $regex2 ='/[a-zA-Z0-9_.]+@[a-zA-Z0-9_]+\.[a-zA-Z0-9.]+$/'; if(preg_match($regex, $email, $a)){ //利用正则表达式规范字符串 echo "This is an email."; print_r($a); echo "<br/>"; } if(preg_match($regex2, $email2, $b)){ echo "This is a new email."; print_r($b); echo "<br/>"; } if(preg_match ($regex, $asemail)){ echo "This is an email."; }else{ echo "This is not an email."; } ?> ``` 运行结果如图5-14所示。 ![](/uploads/images/20231207/ec232bf4c784cce9554aeb6d387a8e34.png) 【案例分析】 (1)$email就是一个完整的email字符串,用$regex这个正则规范(匹配email的规范)来匹配$email,得出的结果为图5-14所示的第一行输出。 (2)preg_match ($regex, $email, $a)把匹配的子串存储在名为$a的数组中。print_r($a)打印数组,得出的结果为第一行数组输出。 (3)$email2是一个包含完整email的字符串。用$regex规范匹配,其返回值必然为false。用$regex2规范匹配,其返回值为ture。因为$regex2规范中去掉了表示从字符串头部开始的符号“^”。preg_match ($regex2, $email2, $b)把匹配的子串存储在数组$b中。print_r($b)得到第二行数组的输出。 (4)$asemail字符串不符合$regex规范,返回值为false,得到相应输出。
上一篇:
正则表达式概述
下一篇:
使用正则表达式替换字符串子串
该分类下的相关小册推荐:
Magento零基础到架构师(目录管理)
PHP高性能框架-Workerman
Laravel(10.x)从入门到精通(二)
Workerman高性能Web框架-Webman
PHP程序员面试算法宝典
Laravel(10.x)从入门到精通(六)
Magento零基础到架构师(系统管理)
PHP8实战小册
Yii2框架从入门到精通(中)
Magento中文全栈二次开发
PHP8入门与项目实战(8)
PHP面试指南