没有合适的资源?快使用搜索试试~ 我知道了~
首页javascript正则表达式深度解析与实战指南
javascript正则表达式深度解析与实战指南
需积分: 9 1 下载量 41 浏览量
更新于2024-07-18
收藏 2.06MB PDF 举报
"这是一本关于JavaScript正则表达式深入解析的教程,作者老姚,专为想要提升JavaScript技能的读者精心编撰。该书详细讲解了正则表达式的各个方面,包括字符匹配、位置匹配、括号的作用以及回溯法原理。 在第一章中,主要介绍了正则表达式的两种模糊匹配方式:横向模糊匹配(如通配符*和+)和纵向模糊匹配(重复次数的限定)。字符组是核心概念,包括范围表示法(如[a-z])、排除字符组([^a-z])和常见简写形式。量词部分解释了简写形式(如*?和??),并区分了贪婪匹配(默认)与惰性匹配(?.)的概念。 第二章聚焦于位置匹配,讲解了正则中的锚点符号(^和$)、边界匹配(\b和\B)、前瞻和后瞻断言((?=p)和(?!p)),以及它们在实际案例中的应用,如验证数字格式、密码规则等。 第三章着重讨论括号在正则表达式中的功能,包括分组和分支结构,分组引用的使用,如数据提取和替换操作,以及反向引用的规则,如如何处理嵌套括号和引用不存在的分组。此外,还介绍了非捕获括号,它在实际编程中的应用场景,如字符串处理和HTML标签匹配。 第四章深入探讨回溯法原理,区分无回溯匹配和需要回溯的情况,展示了贪婪量词、惰性量词以及分支结构如何导致回溯。这一章节帮助读者理解复杂模式匹配时,为何需要考虑回溯策略。 通过这本书,读者可以系统地学习和掌握JavaScript正则表达式的使用技巧,从而在处理文本处理、数据验证、字符串操作等场景中游刃有余,提升编程效率和代码质量。无论是初学者还是经验丰富的开发者,都能从中找到所需的知识点,进一步提升自己的技术实力。"
资源详情
资源推荐
通过在量词后面加个问号就能实现惰性匹配,因此所有惰性匹配情形如下:
惰性量词 贪婪量词
{m,n}? {m,n}
{m,}? {m,}
?? ?
+? +
*? *
TIP
对惰性匹配的记忆方式是:量词后面加个问号,问一问你知足了吗,你很贪婪吗?
以上惰性量词对应的可视化形式是:
1.4. 多选分支
一个模式可以实现横向和纵向模糊匹配。而多选分支可以支持多个子模式任选其一。
具体形式如下:(p1|p2|p3),其中 p1、p2 和 p3 是子模式,用 |(管道符)分隔,表示其中任何之一。
例如要匹配字符串 "good" 和 "nice" 可以使用 /good|nice/。
可视化形式如下:
测试如下:
var regex = /good|nice/g;
var string = "good idea, nice try.";
console.log( string.match(regex) );
// => ["good", "nice"]
但有个事实我们应该注意,比如我用 /good|goodbye/,去匹配 "goodbye" 字符串时,结果是 "good":
JavaScript 正则表达式迷你书
1. 第一章 正则表达式字符匹配攻略 | 第 10 页
var regex = /good|goodbye/g;
var string = "goodbye";
console.log( string.match(regex) );
// => ["good"]
而把正则改成 /goodbye|good/,结果是:
var regex = /goodbye|good/g;
var string = "goodbye";
console.log( string.match(regex) );
// => ["goodbye"]
也就是说,分支结构也是惰性的,即当前面的匹配上了,后面的就不再尝试了。
1.5. 案例分析
匹配字符,无非就是字符组、量词和分支结构的组合使用罢了。
下面找几个例子演练一下(其中,每个正则并不是只有唯一写法):
1.5.1. 匹配 16 进制颜色值
要求匹配:
#ffbbad
#Fc01DF
#FFF
#ffE
分析:
表示一个 16 进制字符,可以用字符组 [0-9a-fA-F]。
其中字符可以出现 3 或 6 次,需要是用量词和分支结构。
使用分支结构时,需要注意顺序。
正则如下:
var regex = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g;
var string = "#ffbbad #Fc01DF #FFF #ffE";
console.log( string.match(regex) );
// => ["#ffbbad", "#Fc01DF", "#FFF", "#ffE"]
JavaScript 正则表达式迷你书
1. 第一章 正则表达式字符匹配攻略 | 第 11 页
其可视化形式:
1.5.2. 匹配时间
以 24 小时制为例。
要求匹配:
23:59
02:07
分析:
共 4 位数字,第一位数字可以为 [0-2]。
当第 1 位为 "2" 时,第 2 位可以为 [0-3],其他情况时,第 2 位为 [0-9]。
第 3 位数字为 [0-5],第4位为 [0-9]。
正则如下:
var regex = /^([01][0-9]|[2][0-3]):[0-5][0-9]$/;
console.log( regex.test("23:59") );
console.log( regex.test("02:07") );
// => true
// => true
JavaScript 正则表达式迷你书
1. 第一章 正则表达式字符匹配攻略 | 第 12 页
NOTE
正则中使用了 ^ 和 $,分别表示字符串开头和结尾。具体详细请参考第二章。
如果也要求匹配 "7:9",也就是说时分前面的 "0" 可以省略。
此时正则变成:
var regex = /^(0?[0-9]|1[0-9]|[2][0-3]):(0?[0-9]|[1-5][0-9])$/;
console.log( regex.test("23:59") );
console.log( regex.test("02:07") );
console.log( regex.test("7:9") );
// => true
// => true
// => true
其可视化形式:
1.5.3. 匹配日期
比如 yyyy-mm-dd 格式为例。
要求匹配:
2017-06-10
分析:
年,四位数字即可,可用 [0-9]{4}。
月,共 12 个月,分两种情况 "01"、"02"、…、"09" 和 "10"、"11"、"12",可用 (0[1-9]|1[0-2])。
日,最大 31 天,可用 (0[1-9]|[12][0-9]|3[01])。
JavaScript 正则表达式迷你书
1. 第一章 正则表达式字符匹配攻略 | 第 13 页
剩余88页未读,继续阅读
SouL_XxxYH
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C语言快速排序算法的实现与应用
- KityFormula 编辑器压缩包功能解析
- 离线搭建Kubernetes 1.17.0集群教程与资源包分享
- Java毕业设计教学平台完整教程与源码
- 综合数据集汇总:浏览记录与市场研究分析
- STM32智能家居控制系统:创新设计与无线通讯
- 深入浅出C++20标准:四大新特性解析
- Real-ESRGAN: 开源项目提升图像超分辨率技术
- 植物大战僵尸杂交版v2.0.88:新元素新挑战
- 掌握数据分析核心模型,预测未来不是梦
- Android平台蓝牙HC-06/08模块数据交互技巧
- Python源码分享:计算100至200之间的所有素数
- 免费视频修复利器:Digital Video Repair
- Chrome浏览器新版本Adblock Plus插件发布
- GifSplitter:Linux下GIF转BMP的核心工具
- Vue.js开发教程:全面学习资源指南
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功