博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP正则表达式函数解析与正则表达式基本语法
阅读量:6334 次
发布时间:2019-06-22

本文共 1067 字,大约阅读时间需要 3 分钟。

一、PHP正则表达式函数解析

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

preg_match();preg_match_all();表单验证等

//email地址的合法性-preg_match(),匹配结果可以看作是bool值

preg_replace();非法词的过滤

//f**k

二、正则表达式基本语法

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

中午匹配最好转成unicode:

clipboard.png

注意:[^是必须在一起的,否则如下:^也被当成一个原子去匹配。

分枝是指制定几个规则,如果满足任意一种规则,则都当作匹配成功。具体来说就是用 | 符号把各种规则分开,且条件从左至右匹配。

提示
由于分枝规定,只要匹配成功,就不再对后面的条件加以匹配,所以如果你想匹配有包含关系的内容,请注意规则的顺序。 下面是一个使用分枝的例子。

美国的邮政编码的规则是 5 个数字或者 5 个数字连上 4 个数字,如 12345 或者 54321-1234 ,如果要匹配所有的邮编,则正确的正则表达式为:\d{5}-\d{4}|\d{5}//错误写法\d{5}|\d{5}-\d{4}下面的错误写法,只能匹配到 5 位数字及 9 位数字的前 5 位数字的情况,而不能匹配 9 位数字的邮编。

clipboard.png

clipboard.png

.等价于[^\n]

clipboard.png

{n} 表示匹配其前面的原子恰好笔记出现n次的 如:5{3} 相当于 555 {n,}

表示匹配其前面的原子最少出现n次的如:[a-zA-Z]{5,}至少连续出现5次的字母如wertt;
{n,m}表示其前面的原子最少出现5次,最多出现m次 如:w{5,9}
* 匹配0次, 1次或者多次其之前的原子 即{0,} 如w*
+ 匹配1次或多次其之前的原子 {1,} d+
?匹配0次或1次其之前的原子 {0,1} _?u

clipboard.png

clipboard.png

第三、修正模式

clipboard.png

clipboard.png

多种可能结果中最短的那个,默认是贪婪模式,既多种可能性中最长的那个

clipboard.png

clipboard.png

clipboard.png

x:忽略空格和tab制表符空白格

四、实战-常见正则表达式

clipboard.png

  1. 非空匹配:.+

  2. 浮点数:\d+\.\d{2}$

  3. 手机号:^1(3|5)d{9}$

  4. 邮箱:^\w+(\.\w+)*@\w+(\.\w+)+$

  5. URl:^(https?:\/\/)?(\w+\.)+[a-zA-Z]+$

  6. 仅匹配3~15个汉字和大小写字母:^([\x{4e00}-\x{9fa5}]|[a-zA-Z]){3,15}$/u

(/u表示按unicode(utf-8)匹配(主要针对多字节比如汉字),/U才是懒惰匹配哦)

正则表达式的/要转义,不转义是匹配不到的

模式单元(3|5|7|8)等同于[3578]
注意:(3|5) 等同于[35]而不是[3|5]哦!!

转载地址:http://vgioa.baihongyu.com/

你可能感兴趣的文章
[Algorithms] Longest Increasing Subsequence
查看>>
MAC下GitHub命令操作
查看>>
springboot之filter/listener/servlet
查看>>
Thinkphp --- 去掉index.php
查看>>
Spring+SpringMVC+MyBatis深入学习及搭建(十一)——SpringMVC架构
查看>>
oracle故障解决
查看>>
tcpdump
查看>>
数据库内存结构
查看>>
利用Shell开发跳板机功能脚本案例
查看>>
51CTO的技术门诊谈OSSIM
查看>>
六年心路成长 —— 做自己
查看>>
ios电话拨打进行监听电话状态
查看>>
京东基于Spark的风控系统架构实践和技术细节
查看>>
什么时候使用CountDownLatch
查看>>
C#之MemberwiseClone与Clone
查看>>
Android性能优化之利用Rxlifecycle解决RxJava内存泄漏
查看>>
转: 如何为你的开源项目选择一个合适的开源协议?
查看>>
关系型数据库和NOSQL数据库对比
查看>>
Atitit 记录方法调用参数上下文arguments
查看>>
webstorm常用功能FTP,及常用快捷键
查看>>