网站首页 > 文章精选 正文
原书这么一句话,特别棒:正则表达式是匹配模式,要么匹配字符,要么匹配位置,要记住。
1. 两种模糊匹配
正则表达式的强大在于它的模糊匹配,这里介绍两个方向上的“模糊”:横向模糊和纵向模糊。
- 横向模糊匹配
即一个正则可匹配的字符串长度不固定,可以是多种情况。
如 /ab{2,5}c/ 表示匹配: 第一个字符是 "a" ,然后是 2 - 5 个字符 "b" ,最后是字符 "c" :
- 纵向模糊匹配
即一个正则可匹配某个不确定的字符,可以有多种可能。
如 /[abc]/ 表示匹配 "a", "b", "c" 中任意一个。
2. 字符组
- 范围表示法
可以指定字符范围,比如 [1234abcdUVWXYZ] 就可以表示成 [1-4a-dU-Z] ,使用 - 来进行缩写。
如果要匹配 "a", "-", "z" 中任意一个字符,可以这么写: [-az] 或 [a\-z] 或 [az-] 。
- 排除字符组
即需要排除某些字符时使用,通过在字符组第一个使用 ^ 来表示取反,如 [^abc] 就表示匹配除了 "a", "b", "c" 的任意一个字符。
- 常见简写形式
3. 量词
量词也称重复,常用简写如下:
- 贪婪匹配和惰性匹配
在正则 /\d{2,4}/ ,表示数字连续出现 2 - 4 次,可以匹配到 2 位、 3 位、4 位连续数字。
但是在 贪婪匹配 如 /\d{2,4}/g ,会尽可能多匹配,如超过 4 个,就只匹配 4 个,如有 3 个,就匹配 3 位。
而在 惰性匹配 如 /\d{2,4}?/g ,会 尽可能少 匹配,如超过 2 个,就只匹配 2 个,不会继续匹配下去。
4. 多选分支
即提供多个子匹配模式任选一个,使用 |(管道符)分隔,由于分支结构也是惰性,即匹配上一个后,就不会继续匹配后续的。
格式如:(r1|r2|r3),我们就可以使用 /leo|pingan/ 来匹配 "leo" 和 "pingan"。
5. 案例分析
匹配字符,无非就是字符组、量词和分支结构的组合使用。
- 十六进制颜色值匹配
- 时间和日期匹配
- Windows操作系统文件路径匹配
盘符使用 [a-zA-Z]:\\ ,这里需要注意 \ 字符需要转义,并且盘符不区分大小写;
文件名或文件夹名,不能包含特殊字符,使用 [^\\:*<>|"?\r\n/] 表示合法字符;
并且至少有一个字符,还有可以出现任意次,就可以使用 ([^\\:*<>|"?\r\n/]+\\)* 匹配任意个 文件夹\;
还有路径最后一部分可以是 文件夹 ,即没有 \ 于是表示成 ([^\\:*<>|"?\r\n/]+)?。
- id匹配
如提取
tips1:由于 . 匹配双引号,且 * 贪婪,就会持续匹配到最后一个双引号结束。
tips2:使用惰性匹配,但效率低,有回溯问题。
tips3:最终优化。
公众号:前端自习课
猜你喜欢
- 2025-04-07 史上最全正则详解(正则的用法)
- 2025-04-07 10分钟快速掌握正则表达式(正则表达式快速入门)
- 2025-04-07 数字为文本类型时不显示错误提示(该数字为文本类型)
- 2025-04-07 EXCEL VBA学习笔记:正则表达式(二)表达式语句写法
- 2025-04-07 鸿蒙开发:正则中的match和matchAll
- 2025-04-07 VBA正则表达式实战指南:精准提取字符串前N位数字求和
- 2025-04-07 推荐三款正则可视化工具「JS篇」(js正则在线)
- 2025-04-07 JavaScript全解析——正则表达式(js正则表达式实例)
- 2025-04-07 InDesign正则表达式实例(一)查找替换有规律的特定字符
- 2025-04-07 Excel正则表达式提取删除数字字母汉字等#正则表达式
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)