0

0

正则表达式字符小结

小云云

小云云

发布时间:2018-02-22 13:14:03

|

1784人浏览过

|

来源于php中文网

原创

正则表达式基本

匹配单个字符

匹配单个数字的写法,可以是 “[0-9]” 也可以是 “\d”。

匹配单个非数字字符,则使用大写 “\D”。

匹配 26 个字母的任意一个,使用 “[a-zA-Z]

匹配任意一个字符,使用点号 “.

匹配具体字符,则直接写上去即可。比如 “abcd” 就是匹配它本身。如果遇到特殊字符,则需要进行转义,转义字符为 “\”。

匹配一个字符,使用中括号的做法称为 “字符集”。中括号用于指定一个 “”,匹配这个集中的一个字符,如十六进制数 “[0-9a-fA-F]”。字符集内的点表示的是点号本身,但其他的特殊字符还是需要进行转移,比如反斜杠字符。

使用量词

贪心匹配

如果要表示某个规则的重复,则需要使用量词。使用花括号表示重复次数。比如 8 个数字可以这样表示:“\d{8}

花括号中的量词可以变化,比如表示 7 到 8 个数字,则表示为 “\d{7,8}”。表示上限的右值可以不写,比如 “{0,}” 是合法的,表示大于等于 0 个字符;但试图单独表示上限的 “{,10}” 则不合法,至少应该写为 “{0,10}”。

加号 “+” 表示它左边的元素数量为 “一个或多个”,等于 “{1,}” 的效果。所以加号也是特殊字符。

星号 “*” 表示它左边的元素数量为 “零个或至少一个”,即 “{0,}”。

问号 “?” 表示 “零个或一个”,等同于 “{0,1}”。

懒惰匹配

上面的诸如 +*,匹配的时候都会使用 “贪心” 的模式,也就是匹配尽量多的个数。比如字符串 “55555”,使用 “5+” 去匹配时,会匹配到它能够找到的最长字符串,即 “55555”。

如果在量词后面加上问号,则使匹配模式变为 “懒惰” 的,也就是匹配最少的。比如使用 “5+?” 去匹配,则只会找到能够匹配的最小字符 “5”.

以下都是可用的懒惰匹配表达式:+?, *?, {n,}?, {m,n}?

捕获分组(类似于宏定义)

可以把表达式中的一部分 “捕获” 起来,作为宏放在后边引用。使用括号进行定义(捕获),然后再定义的后面使用 “” 进行引用;如果是第二个捕获,则使用 “”,以此类推。

VB.NET字符串与正则表达式大全
VB.NET字符串与正则表达式大全

VB.NET字符串和正则表达式大全

下载

分组一般都会被保存起来,但是当表达式非常长的时候,可能需要明确指明不保存该分组。比如使用这个格式 “(?:THE|The|the)”,就使用了 “?:” 标号来表示不要进行命名标记。

“或” 逻辑

使用 “|” 来链接两个字段,提供 “或” 的逻辑。注意与括号搭配使用

“非” 逻辑

如果在集合 “[...]” 中使用字符 “^”,则表示 “非”,如 “[^0-9]” 等同于 “\D”。

正则表达式字符小结

简单的模式匹配

以下是各种常用的单字符匹配列表:

指代类型 模式 备注
数字 \d
字母、数字、下划线 \w 等效于 “[_a-zA-Z0-9]
非数字 \D
非字母 \W
制表符 Tab \t
Null 字符 \0
Backspace [\b]
空格 \s 等效于 “[ \t\n\r]
Return \r
换行 \n
单词之间的空白 \b 这里只是匹配单词的开始 / 结束,不消耗任何字符
任意一个字符 . 行结束符无法使用这个符号匹配

正则表达式字符小结

边界

本小节设计一个概念:断言,又称为 “零宽度断言(zero-width asseration)”。这个概念不匹配字符,而是匹配字符串中的位置。

行的起始和结束

  • 使用 “^” 表示一行的开始

  • 使用 “$” 表示一行的终止

单词边界和非单词边界

比如要匹配单词 “the”,则写 “\bthe\b”。如果要匹配哥哥中间带 “e” 的单词,则可以写 “\Be\B

可以使用 “\” 匹配单词开头,“\>” 匹配单词结尾。但是这两个并不建议使用,因为新的匹配器可能不支持。

正则表达式字符小结

Unicode 字符和其他字符

正则表达式支持输入 unicode 的值,如 “\u00e9”。注意 unicode 必须有四位十六进制位,大小写均可。Javascript 还支持 “\xe9” 的写法,然而 “\x00e9” 则是错误的。

相关推荐:

js正则表达式验证时间格式实例

正则表达式 \v 元字符详解

JS正则表达式要点分析


相关专题

更多
C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

10

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

29

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

21

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

13

2026.01.22

PHP特殊符号教程合集
PHP特殊符号教程合集

本专题整合了PHP特殊符号相关处理方法,阅读专题下面的文章了解更多详细内容。

11

2026.01.22

PHP探针相关教程合集
PHP探针相关教程合集

本专题整合了PHP探针相关教程,阅读专题下面的文章了解更多详细内容。

8

2026.01.22

菜鸟裹裹入口以及教程汇总
菜鸟裹裹入口以及教程汇总

本专题整合了菜鸟裹裹入口地址及教程分享,阅读专题下面的文章了解更多详细内容。

55

2026.01.22

Golang 性能分析与pprof调优实战
Golang 性能分析与pprof调优实战

本专题系统讲解 Golang 应用的性能分析与调优方法,重点覆盖 pprof 的使用方式,包括 CPU、内存、阻塞与 goroutine 分析,火焰图解读,常见性能瓶颈定位思路,以及在真实项目中进行针对性优化的实践技巧。通过案例讲解,帮助开发者掌握 用数据驱动的方式持续提升 Go 程序性能与稳定性。

9

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

AngularJS教程
AngularJS教程

共24课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号