正则表达式通常用来查找和替换字符串,最常用的为验证用户输入的信息格式是否正确,比如邮箱格式、电话格式、身份证等;

什么时候使用正则表达式呢?不是所有的字符操作都用正则就好了,php在某些方面用正则反而影响效率。当我们遇到复杂文本数据的解析时候,用正则是比较好的选择。

正则表达式在处理复杂字符操作时,可以提高工作效率,并节省一定程度代码量。

由于复杂的正则表达式会加大代码的复杂度,让人难以理解,因此需要在表达式内部添加相应注释。

1、定界符:除了字母数字和反斜杠\以外的任何字符都可以为定界符,比如|| {}//!! 但是需要注意,如果没有特殊需要,都用正斜杠//作为正则表达式的定界符;

2、正则表达式的构成:

/原子和元字符/模式修正符

正则表达式的原子和元字符都放在定界符之间,而模式修正符放在定界符之外。

什么是原子:原子是正则表达式的最基本组成单位,而且必须至少要包含一个原子。只要一个正则表达式可以单独使用的字符就是原子。

原子的构成:

1、所有可以在屏幕上输出的字符(大写和小写字母字符,所有数字,所有标点符号以及一些符号)和看不到的(空格换行符等);

字符 含义
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

2、还可以使用系统提供的代表范围的原子;

\d包含所有数字[0-9]

\D 除所有数字外[^0-9]

\w 包含所有英文字符[a-zA-Z_0-9]

\W 除所有英文字符外[^a-zA-Z_0-9]

3、自定义原子,使用[]括起来,比如[a-z][a-zA-Z]等;

元字符:

$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n’ 匹配字符 ‘n’。’\n’ 匹配换行符。序列 ‘\\’ 匹配 “\”,而 ‘\(’ 则匹配 “(”。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。

模式修正符:

注释:

注释(?#comment) 用途:主要用于复杂的注释

常用正则表达式收集:

表单验证匹配
验证账号,字母开头,允许 5-16 字节,允许字母数字下划线:^[a-zA-Z][a-zA-Z0-9_]{4,15}$
验证账号,不能为空,不能有空格,只能是英文字母:^S+[a-z A-Z]$
验证账号,不能有空格,不能非数字:^d+$
验证用户密码,以字母开头,长度在 6-18 之间:^[a-zA-Z]w{5,17}$
验证是否含有 ^%&’,;=?$ 等字符:[^%&',;=?$x22]+
匹配Email地址:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配腾讯QQ号:[1-9][0-9]{4,}
匹配日期,只能是 2004-10-22 格式:^d{4}-d{1,2}-d{1,2}$
匹配国内电话号码:^d{3}-d{8}|d{4}-d{7,8}$ 评注:匹配形式如 010-12345678 或 0571-12345678 或 0831-1234567
匹配中国邮政编码:^[1-9]d{5}(?!d)$
匹配身份证:d{14}(d{4}|(d{3}[xX])|d{1}) 评注:中国的身份证为 15 位或 18 位
不能为空且二十字节以上:^[s|S]{20,}$
字符匹配
匹配由 26 个英文字母组成的字符串:^[A-Za-z]+$
匹配由 26 个大写英文字母组成的字符串:^[A-Z]+$
匹配由 26 个小写英文字母组成的字符串:^[a-z]+$
匹配由数字和 26 个英文字母组成的字符串:^[A-Za-z0-9]+$
匹配由数字、26个英文字母或者下划线组成的字符串:^w+$
匹配空行:n[s| ]*r
匹配任何内容:[sS]*
匹配中文字符:[x80-xff]+ 或者 [xa1-xff]+
只能输入汉字:^[x80-xff],{0,}$
匹配双字节字符(包括汉字在内):[^x00-xff]

Php基础正则表达式篇相关推荐

  1. 鸟哥的linux私房菜-基础学习篇 读书笔记

    从事linux工作一年多,算是能够熟练运用linux服务器,但仍觉得自己对Linux的原理,理论缺乏空洞,潜下心来认真阅读尘封的鸟哥经典,知识点很全,收获颇多,实践与知识结合,知行合一,对linux开 ...

  2. 【linux】循序渐进学运维-基础命令篇-查找类命令

    本文为循序渐进学运维系列的基础命令篇,文章已收录gitee. 在Gitee上,点击直达 有运维技术的全部技术栈和文档,免费学习. 打造运维行业最全的知识体系,欢迎star 点赞再看,注意收藏,习惯养成 ...

  3. View 5.1 重装上阵(4—基础架构篇)

    从底层架构方面来看,VIEW 5.1最大的改进在于引入了Content-Based Read Cache(CBRC) 技术,大大降低了部署桌面虚拟化所带来的IOPS风暴,同时大大降低了对于存储的压力和 ...

  4. 《Ansible权威指南 》一 第一篇 Part 1 基础入门篇

    本节书摘来自华章出版社<Ansible权威指南 >一书中的第1章,第1.1节,李松涛 魏 巍 甘 捷 著更多章节内容可以访问云栖社区"华章计算机"公众号查看. 第一篇 ...

  5. 微指令地址的形成方式_交换那些事儿 | 基础维护篇 IPv6地址分类及配置方法

    IPv6地址分类及配置方法 H3C交换机基础维护篇 何为IPv6 随着网络的不断扩大和发展,IPv4的地址空间已不能满足需求,因此IPv6协议的应用越来越广泛.那么IPv6地址是如何规范和配置的呢,今 ...

  6. 一文读懂物联网 MQTT 协议之基础特性篇

    一.前言 上个月有个读者问我物联网 MQTT 协议实战相关的问题,我说后面会搞,没想到不知不觉一个月了,太忙了,再怎么忙答应的事情还是要给读者一个交代,所以就有了此文. 二.MQTT 协议概要 2.1 ...

  7. SP 短信开发-基础知识篇

    SP 短信开发-基础知识篇 很土的话题,但是最近帮朋友做这个东西,所以写点东西出来给初学者参考. 一.准备资料 SP开发资料网站上有很多,但是主要是以下几个文档: 1.MISC1.6 SP订购通知接口 ...

  8. 智能车竞赛线上培训:英飞凌AURIX的智能车应用--基础四轮篇

      全国大学生智能汽车竞赛是以智能汽车为研究对象的创意性科技竞赛,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一.   本竞赛以"立足培养,重在参与,鼓励探索 ...

  9. Xamarin XAML语言教程基础语法篇大学霸

    Xamarin XAML语言教程基础语法篇大学霸 前  言 Xamarin是一个跨平台开发框架.它可以用来开发iOS.Android.Windows Phone和Mac的应用程序.使用Xamarin框 ...

最新文章

  1. 用泰勒级数来估计函数的近似值
  2. 关于近期对Lucene.Net应用研究学习的总结
  3. mapper代理(十一)
  4. python-socket
  5. No, Machine Learning is not just glorified Statistics
  6. 【Go】panic: reflect: call of reflect.Value.FieldByName on ptr Value
  7. OAM创始团队:揭秘OAMKubernetes实现核心原理
  8. left join 多条件_第九篇|Spark的五种JOIN策略解析
  9. php 查找所有函数,PHP(方法 函数 循环 和 数组 查找)
  10. 嘉兴 机器人仓库 菜鸟_投资 2.1 亿!又一高端智能装备项目落户嘉兴科技城
  11. 彼之蜜糖,我之砒霜;彼之敝履,吾之瑰宝
  12. ModbusTCP助手调试工具Modbus主站调试工具ModbusMaster支持所有Modbus设备调试
  13. html5仿苹果通讯录效果,仿IOS手机通讯录效果
  14. 程序员PDF书籍下载
  15. Overload 和 Override 的区别
  16. IO---缓冲流、字符集、转换流、序列化和反序列化
  17. python生成树状图_python 字典生成树状图
  18. GDDR6X和GDDR6差距对比 GDDR6X和GDDR6区别
  19. OpenCV绘制点线
  20. 投资,不能也不想做的太复杂

热门文章

  1. Map的putAll方法踩坑实记(对象深拷贝浅拷贝)
  2. setcellvalue 格式_POI对EXCEL的操作【重点:如何设置CELL格式为文本格式】
  3. win10 自待wmi应用 查询wmi
  4. vmware14/15 安装Ubuntu12.04 图文八步法
  5. 为什么redis取出来是null_跳表:为什么Redis一定要用跳表来实现有序集合
  6. python截取子串_python获得子串
  7. 做了个EMMC分析治具
  8. golang 切片 接口_一日看尽golang高级语法之slice
  9. memcpy 头文件_C|memcpy()和memmove()的比较及实现
  10. php怎么弄自动填充,ThinkPHP 自动填充(自动完成)详解及实例