EasyTool.me
工具 博客 关于
博客首页 / 技术文章

写满火星文?正则表达式 (Regex) 从入门到精通指南

发布于: 2026-03-10 • 分类: 文本处理 / 编码规范

看到 /^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$/ 这一长串仿佛在键盘上撒把米让鸡啄出来的乱码,很多人第一反应是“我是谁?我在哪?这玩意也能被叫做编程语言?”

然而,这就是正则表达式 (Regular Expression)。一旦你跨过那道看上去很高的语法门槛,它将成为你职业生涯中最常使用的终极武器:无论是爬虫提取数据、日志清洗、还是用户注册时的邮箱格式校验。

一、什么是正则表达式?为什么要用它?

想象你在用一个很傻的文本查找工具(例如按下 Ctrl+F)。你想找文本里所有的邮箱地址。你总不能把整个世界所有的邮箱挨个输入一遍去搜吧?你需要的是形容一种“规律 (Pattern)”:“请帮我找一串英文字母或数字,然后中间夹着一个 @ 符号,然后再跟几个字母,接着一个点,最后是一两个英文字母。”

而正则表达式,就是这样一门极其紧凑的、用来描述字符串匹配规则的迷你编程语言。

二、拆解常用魔法符号(元字符)

正则表达式之所以看起来像天书,是因为它用了大量的符号来表示“任何字符”、“开头和结尾”以及“重复次数”。让我们把最基础的兵器库亮出来:

1. 特殊占位符

  • . (点号):匹配几乎任意一个字符。就像扑克牌里的百搭牌。
  • \d:匹配任意一个数字 (Digit)。等价于 [0-9]。
  • \w:匹配任意一个字母、数字或下划线 (Word)。
  • \s:匹配任意一个空白符 (Space),包括空格、Tab缩进或换行。

注意:如果是大写字母,意思就必须是反过来。比如 \D 就是匹配“非数字的任意字符”。

2. 指向边界

  • ^:表示字符串的开始。
  • $:表示字符串的结尾。

这两个符号在表单校验里至关重要。比如你写 \d{4} 来匹配4位数字,但如果不加边界,输入 `12345` 也会匹配成功(因为它包含了前四位1234)。正确的写法是:^\d{4}$(必须从头到尾只有恰好四位数字)。

3. 重复的次数(量词)

  • *:前面的字符可以出现0次或很多次。(可有可无,多多益善)
  • +:前面的字符可以出现1次或很多次。(必须得有,多多益善)
  • ?:前面的字符可以出现0次或1次。(有或者没有都行)
  • {x,y}:限制必须出现 x 到 y 次之间。例如手机号一般是 \d{11}。

三、贪婪模式与“懒惰”模式

这是正则里最大的坑之一。假设有一段 HTML 文本:<div>你好</div>世界。

如果你用 <.*> 去匹配它,你会惊恐地发现引擎直接把 <div>你好</div> 甚至到文本的最末尾都给包了进去!为什么?

因为默认情况下,正则的量词 * 和 + 非常“贪婪”,它们总是试图匹配尽可能长的字符串。想要让它们变得懒惰(即一旦满足条件就赶紧刹车停止),我们需要在后面加一个问号:.*?。这样写,引擎在匹配到第一个 > 时就会停下,乖乖返还给你 <div>。

四、实战演练与工具推荐

正则表达式的终极学习法只有一个:不断地在测试仪上敲击和试错。单纯靠眼睛去解析长长的正则无异于自寻死路。

我们强烈建议您使用本站提供的免费 正则表达式测试器 (Regex Tester)。您可以实时高亮您键入规则后匹配到的字符串结果,并一目了然地分析捕获的组数据 (Capturing Groups)。赶快去试试将这层窗户纸捅破吧!

延伸阅读与相关工具 / Related Tools

JWT Decoder

在线解析 JWT 令牌头与负载明文。

Regex Tester

实时高亮测试您的正则表达式。

Base64 Encoder

最纯净的文本与 Base64 互转工具。

热点专题文章

  • Dependabot Alerts 可分配给 AI Agent:漏洞修复流程重构
  • Copilot CLI 支持 BYOK 与本地模型:离线与成本治理清单
  • GitHub MCP Secret Scanning(2026)接入清单
  • Dependabot 支持 pre-commit:供应链治理实战
EasyTool.me

免费在线开发者工具。

关于

  • 关于我们
  • 联系我们
  • 隐私政策
  • 服务条款

工具

  • 100+ 工具目录
  • JSON 格式化
  • Base64 编解码
  • 技术博客
© 2024-2026 Crafted by cieuly