JavaScript 正则表达式核心语法与实战指南

作者:半夏

时间:2026-10-29

浏览:486

本文系统梳理 JavaScript 中正则表达式的核心用法,涵盖字符组、捕获分组、边界锚点及量词机制。通过匹配电话号码的实例,详解 \d、()、^、$ 等元字符含义,并深入解析贪心、懒惰与占有量词的回溯行为,帮助开发者掌握正则编写技巧。

文章目录

正则表达式工具与基础概念

工具

Regexpal 是一款在线 JavaScript 正则表达式测试工具,访问地址为:http://www.regexpal.com

掌握正则表达式的关键在于动手实践,以下通过一个具体案例进行说明:

目标匹配号码格式为:707-827-7019

字符组与元字符匹配

字符组匹配

示例正则:[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] 其中 \d 用于匹配任意阿拉伯数字,\D 则匹配非阿拉伯数字。

. 元字符用于匹配任意单个字符(除换行符外)。

示例正则:\d\d\d\D\d\d\d\D\d\d\d\d\D 或写作:\d\d\d.\d\d\d.\d\d\d\d.

捕获分组与后向引用

捕获分组与后向引用

使用圆括号 () 定义捕获分组,并通过 \1 对已捕获的分组内容进行后向引用。

例如正则 (\d)\d\1 可匹配数字序列 707。

完整号码匹配与边界锚点

完整匹配号码的正则表达式如下:

^(\(\d{3}\)|^\d{3}[.-]?)?\d{3}[.-]?\d{4}$ 各部分含义解析: ^ 表示字符串或行的起始位置 ( 表示捕获分组的开始 \( 表示匹配字面量左括号 \d{3} 表示匹配恰好三位数字 \) 表示匹配字面量右括号 | 表示逻辑或(选择) [.-]? 表示匹配可选的点号或连字符 ) 表示捕获分组的结束 ? 表示前面的分组是可选的 $ 表示字符串或行的结束位置

边界匹配

脱字符 ^ 用于匹配行或字符串的起始位置,美元符 $ 用于匹配行或字符串的末尾位置。

量词机制:贪心、懒惰与占有

量词机制

量词默认采用贪心模式。贪心量词在匹配时会尽可能多地包含字符,即先尝试匹配整个字符串;若后续匹配失败,则逐步回退一个字符重新尝试,此过程称为回溯。懒惰量词从目标起始位置开始,每次仅检查一个字符,逐步推进直至尝试匹配整个字符串。占有量词会直接覆盖整个目标并尝试匹配,但仅尝试一次,不进行回溯。例如 .* 用于匹配任意字符零次或多次。

贪心量词

使用花括号 {} 可限制模式匹配的次数,未修饰的量词默认即为贪心模式。具体对应关系如下: 7{1,} 等价于 7+ 7{0,} 等价于 7* 7? 等价于 7{0,1} 7{m,n} 表示匹配 m 到 n 次。

懒惰量词

在量词后添加 ? 可使其变为懒惰模式。具体行为如下: 7?? 首先尝试匹配零个或一个 7,懒惰模式下优先不匹配 7*? 匹配零个 7 7+? 匹配一个 7 7{m,n}? 匹配 m 个 7

关于正则表达式匹配 HTML 或 XML 标签的内容,将在后续文章中补充。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章