什么是正则表达式
了解正则表达式的定义及其搜索、替换和管理文本的用途
正则表达式(RegEx)是一种文本模式,可用于搜索、替换和管理文本。RegEx 是 Regular Expressions(正则表达式)的缩写。
没有正则表达式的生活
你可能会问:为什么我要学习正则表达式?毕竟,没有它也能进行搜索和替换。那么,让我们来探讨一下为何值得投入时间学习正则表达式!

场景一
假设你在一家大型跨国公司工作。经理给你一份长达20页的文档,里面包含数千条电子邮件记录,要求你找出所有域名是 `xyz.com` 的邮箱。如果手动完成这项任务,可能需要花费数天时间!这正是正则表达式发挥作用的地方。
让我们用正则表达式工具重新设想这个场景。要查找域名是 xyz.com 的邮箱,只需编写正则表达式 /.*?@xyz\.com/。它会自动在每封邮件中查找匹配项,无需你逐个检查。

场景二
再来看一个例子。假设你是一名科学家,正在处理包含 ATCG 的长串 DNA 序列。你的主管给了你一段很长的 DNA 字符串,并要求你统计某个特定模式 X 出现的次数。如果手动逐字符比对,将非常繁琐。
正则表达式可以让你输入模式 X,然后返回所有匹配的结果。这种特性使其成为解决大规模问题的理想工具。
为什么使用正则表达式?
正则表达式是一种强大的工具,可以在极少人工干预的情况下高效搜索大量数据。
例如,如果你要在一份20页的文本中手动查找电话号码(其中还包含其他信息),将会耗费大量时间。而使用正则表达式,仅需几个字符即可完成。
要匹配格式为 (234)-562-163 的电话号码,可使用模式 /[(]\d{3}[)](-\d{3}){2}/。任何不符合以“(”开头、数字超过三位或缺少连字符的记录都不会匹配。
正则表达式的用途
- 邮箱和密码验证
- 查找所有 “apple” 和 “Apple” 的出现
- 解析用户输入
- 分析网页服务器日志等
一个小挑战,展示正则表达式的重要性
找出所有域名是 `xyz.com` 的邮箱,并在 return 语句后写出对应的整数答案。

1var count = function(){ 2 let str = 'abc@xyz.com' 3 'bdvih@xyz.comp' 4 'bdadih@xyz.omp' 5 'vih@xyz.comp' 6 'dadihxyz.omp' 7 'bdvhxyzcomp' 8 'adh@x.omp' 9 'vih@xyz.com' 10 'bdih@yz.com' 11 // 例如:return 10; 12 return ; 13}
上述挑战的解决方案
符合条件的邮箱有两个:'abc@xyz.com' 和 'vih@xyz.com'
注意:本课程使用 JavaScript 进行代码和测验。你可以选择自己熟悉的任意编程语言。基本原理在所有语言中都保持一致。每个挑战请先写出输出结果,再点击运行按钮。否则代码区域会报错。
在 JavaScript 中,正则表达式写在 /RegEx/flag 之间,其中 str 表示需要应用正则表达式的文本,使用 str.match(/RegEx/flag) 来执行匹配。