TontonTools
网页开发

初学者正则表达式:实用介绍

Enyong Carinton Tegum· February 10, 2026· 1 分钟阅读时间
Searching text patterns with a magnifying glass
Photo by Nothing Ahead on Pexels

正则表达式——“regex”——看起来就像有人在键盘上睡着了:^\d{3}-\d{4}$。但在这些神秘符号的背后是编程中最强大的工具之一:一种用于描述和匹配文本模式的微型语言。了解基础知识,您将可以节省执行验证、搜索以及查找和替换等任务的时间。

正则表达式的用途

正则表达式描述模式,正则表达式引擎查找(或验证或替换)与其匹配的文本。 “查找所有电子邮件地址”、“检查这是一个有效的电话号码”、“将每个双空格替换为一个”——所有这些都是正则表达式作业。几乎所有编程语言和大多数文本编辑器都支持它。

构建模块

  • . — 匹配任何单个字符。
  • \d — 任何数字; \w — 任何单词字符; \s — 任何空格。
  • * — 零个或多个; + — 一个或多个; ? — 可选。
  • {3} — 正好三个; {2,5} — 2 到 5 之间。
  • ^$ — 字符串的开头和结尾。
  • [abc] — a、b 或 c 中的任何一个; [a-z] — 任意小写字母。

阅读真实示例

^\d{3}-\d{4}$。逐段:字符串开头,恰好三位数字,连字符,恰好四位数字,字符串结尾。因此它匹配“123-4567”,但不匹配“12-4567”。突然间它就变得可读了,不再是魔法了。

在信任之前进行测试

正则表达式的黄金法则:永远不要使用未经真实示例测试过的模式 - 它很容易出现微妙的错误(匹配太多或太少)。在我们的正则表达式测试器中构建和测试具有实时突出显示的模式,尝试应该匹配的字符串和不应该匹配的字符串。

哪里更深入

一旦掌握了基础知识,组、交替和前瞻等概念就会扩展您的能力。 MDN 正则表达式指南是后续步骤的优秀且示例丰富的参考。

捕获组:提取,而不仅仅是匹配

正则表达式中的括号有双重作用 - 它们对模式的各个部分进行分组,并“捕获”它们匹配的内容,以便您可以提取它。像 (\d{4})-(\d{2})-(\d{2}) 这样针对日期的模式不仅可以确认格式,还可以确认日期。它分别为您提供年、月和日。捕获组将正则表达式从是/否验证器转变为从混乱文本中提取结构化数据的工具 - 这是其最强大的日常用途之一。

贪婪匹配陷阱

默认情况下,像 *+ 这样的量词是“贪婪的”——它们会尽可能多地获取。因此, <.+> 匹配整个字符串,而不仅仅是第一个标签,因为它会抓取直到最后一个 > 的所有内容。添加 ? 会使量词“惰性”(<.+?>),尽可能少地匹配。这种贪婪与懒惰的区别是大量“我的正则表达式匹配太多”的令人头疼的问题背后的原因。

知道何时不使用正则表达式

正则表达式很强大,但并不总是正确的工具。使用正则表达式解析 HTML 或 JSON 是出了名的脆弱——请使用真正的解析器。过于聪明的正则表达式可能不可读且缓慢(某些模式甚至会导致灾难性的回溯,从而挂起您的应用程序)。经验法则:正则表达式适用于纯文本中明确定义的模式;对于结构化格式,请使用专用解析器。在信任之前,请始终根据真实数据测试您的模式

底线

正则表达式是一种用于匹配文本模式的紧凑语言——一旦您了解了构建块,它对于验证、搜索和替换来说是非常有价值的。学习常见符号,从左到右阅读模式,并始终根据真实数据进行测试。它为较小的学习曲线带来了很多倍的回报。

Share X / Twitter Facebook LinkedIn WhatsApp

继续阅读

← 返回所有帖子

We use cookies for analytics and to keep the tools free via ads. See our Privacy Policy.