写在前面的话
正则表达式它的强大字符串匹配功能,导致目前在各种程序语言中,都非常流行!它被用来描述或者匹配一系列符合某个句法规则的字符串。很多刚刚使用正则表达式都是从听说这个,然后在要使用时候去网上搜索。 很少人一开始就系统去学习正则表达式,从定义原理使用系统学习。因为,对应初学者觉得它太麻烦了,好多原字符。看到那么长一串字符,就很头痛。因此,也懒得去学习。一般遇到问题,直接去网上搜索。如:“邮箱正则表达式,手机号正则表达式,url正则表达式…..” ,我们发现一个很有意思现象,“怎么邮箱正则表达式可以各种各样,url正则表达式也不相同“,都出都在推荐,都说自己是正确的,到底那个是正确的呢?
从各异的正则表达式,我们可以得出2个结论。一、正则表达式很灵活,多种方法可以实现同一种结果(条条大路通罗马),二、正则表达式匹配结果需要验证的,复杂正则表达式很容易产生错误匹配。今天,我这里不说正则表达式灵活性,我们看看常见正则表达式错误使用,产生功能漏洞例子。希望,我们在使用时候多多注意。以下例子,来自我工作中审核代码,经常出现例子,也欢迎朋友们补充!
定界符”^$”缺失bug
<"chengmo8"; if(!preg_match("<strong>/[0-9a-zA-Z]+/</strong>",$user)) { exit("用户名错误!"); }
这是很常见的,因为没有定界符,正则表达式搜索,会从$user中,字符中从左向右搜索,指导找到满足条件的字符,就会匹配到,并且返回true,程序将继续执行。我们测试,用户名输入:chengmo8,chengmo8"[ ]”中字符使用Bug
在正则表达式中,常见正则表达式原字符(.*"htmlcode">
<""; ///匹配字符范围包含.*"/[.*",$code); ///匹配字符范围包含a到z 26个字符 preg_match("/[a-z]+/",$code); ///匹配字符范围包含A到z 实际上,是从默认情况ascii表中,A字符到z字符中间,一共48字符 preg_match("/[A-z]+/",$code); ///匹配字符范围包含A到z 是对应ascill码,16进制 preg_match("/[x41-x7A]+/",$code); ///只想匹配字符串and preg_match("/[and]/",$code); ///实际匹配,所有包含a,n,d 组成所有字符,跟顺序无关
加红是经常错误理解,只想匹配and,一旦加入到"[ ]"中字符,可以理解为所有字符组成字符 集合。任意在其中出现字符,就可以匹配,跟顺序无关系!如果真需要匹配这类,按字符分组来,如”and|bnd” 将匹配and字符串,或者是bnd字符串。”|”字符是,字符串或操作符。左右两边连续字符串会组合为一个整体匹配。
好了,今天就整理,常见正则表达式,2种常见错误。欢迎大家交流!
正则表达式,功能漏洞
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
更新日志
- 三国志8重制版武将图像怎么保存 三国志8重制版武将图像设置方法
- 何方.1990-我不是那种人【林杰唱片】【WAV+CUE】
- 张惠妹.1999-妹力新世纪2CD【丰华】【WAV+CUE】
- 邓丽欣.2006-FANTASY【金牌大风】【WAV+CUE】
- 饭制《黑神话》蜘蛛四妹手办
- 《燕云十六声》回应跑路:年内公测版本完成95%
- 网友发现国内版《双城之战》第二季有删减:亲亲环节没了!
- 邓丽君2024-《漫步人生路》头版限量编号MQA-UHQCD[WAV+CUE]
- SergeProkofievplaysProkofiev[Dutton][FLAC+CUE]
- 永恒英文金曲精选4《TheBestOfEverlastingFavouritesVol.4》[WAV+CUE]
- 群星《国风超有戏 第9期》[320K/MP3][13.63MB]
- 群星《国风超有戏 第9期》[FLAC/分轨][72.56MB]
- P1X3L《P1X3L》[320K/MP3][143MB]
- 群星.2022-良辰好景知几何电视剧原声带【SONY】【FLAC分轨】
- 庾澄庆.1991-管不住自己【福茂】【WAV+CUE】