JavaScript 正则表达式 API 总结

本文总结了JavaScript正则表达式的主要API,分为正则对象创建、实例属性、实例方法和字符串方法四类。


正则对象可通过构造函数或字面量创建,实例属性包括source、flags及各类匹配标志(g/i/m等)。


实例方法test()用于测试匹配,exec()执行搜索匹配。


字符串原型方法如match()、replace()等支持正则操作。


ES6+新增了unicodeSets、hasIndices等特性。


文中还提供了常用标志说明和使用示例,包括创建正则、测试匹配、提取结果和替换内容等典型场景,完整覆盖了JavaScript正则表达式的核心功能。


关联阅读推荐

JavaScript正则表达式学习方法总结


正则表达式规则和常用案例


js权威指南_第十章正则表达式


JavaScript 正则表达式 API 总结表格

类别 API/方法 所属对象 功能描述 返回值 示例
正则对象创建 new RegExp(pattern, flags) RegExp 构造函数 动态创建正则表达式对象 RegExp 对象 new RegExp('\\d+', 'g')
/pattern/flags 字面量语法 静态创建正则表达式对象 RegExp 对象 /\d+/g
正则实例属性 .source RegExp 实例 获取正则模式字符串(不含flags) 字符串 /ab/.source → "ab"
.flags RegExp 实例 获取正则标志字符串 字符串 /ab/gi.flags → "gi"
.global RegExp 实例 是否启用全局匹配(g标志) 布尔值 /ab/g.global → true
.ignoreCase RegExp 实例 是否忽略大小写(i标志) 布尔值 /ab/i.ignoreCase → true
.multiline RegExp 实例 是否多行模式(m标志) 布尔值 /ab/m.multiline → true
.dotAll RegExp 实例 是否让.匹配所有字符(s标志,ES2018) 布尔值 /ab/s.dotAll → true
.unicode RegExp 实例 是否启用Unicode模式(u标志) 布尔值 /ab/u.unicode → true
.sticky RegExp 实例 是否启用粘连模式(y标志) 布尔值 /ab/y.sticky → true
.lastIndex RegExp 实例 下次匹配开始的索引(仅当g或y标志时有效) 数字 可读写属性,用于控制匹配位置
正则实例方法 .test(string) RegExp 实例 测试字符串是否匹配模式 布尔值 /\d+/.test("123") → true
.exec(string) RegExp 实例 执行搜索匹配,返回匹配结果数组 数组或null /(\d+)/.exec("ab123") → ["123", "123"]
字符串方法 .match(regexp) String 原型 返回字符串匹配正则的结果 数组或null "ab123".match(/\d+/) → ["123"]
.matchAll(regexp) String 原型 返回所有匹配的迭代器(需g标志) 迭代器 Array.from("a1 b2".matchAll(/\d/g))
.search(regexp) String 原型 返回第一个匹配的索引 数字(索引) "ab123".search(/\d+/) → 2
.replace(regexp, replacement) String 原型 替换匹配的子串 新字符串 "a1b2".replace(/\d/g, "#") → "a#b#"
.replaceAll(regexp, replacement) String 原型 替换所有匹配的子串(需g标志) 新字符串 "a1b2".replaceAll(/\d/g, "#") → "a#b#"
.split(separator) String 原型 使用正则或字符串分隔字符串 数组 "a,b,c".split(/,/) → ["a","b","c"]
正则静态属性 RegExp.$1-$9 RegExp 构造函数 最近一次匹配的分组捕获(已废弃,避免使用) 字符串 非标准,建议使用exec/match的结果
RegExp.input ($_) RegExp 构造函数 最近一次匹配的输入字符串(已废弃) 字符串 非标准,避免使用
ES6+ 新增 RegExp.prototype.unicodeSets RegExp 实例 是否启用Unicode集合模式(v标志,ES2024) 布尔值 /\p{Script=Greek}/v.unicodeSets → true
RegExp.prototype.hasIndices RegExp 实例 是否捕获匹配的索引(d标志,ES2022) 布尔值 /(a+)/d.hasIndices → true
RegExp.prototype.exec() 返回的 indices RegExp 实例 包含每个捕获组开始和结束索引的数组(需d标志) 数组 /(a+)/d.exec("baaab").indices → [[1,4],[1,4]]

常用正则标志说明

标志 名称 作用
g global 全局匹配,查找所有匹配项
i ignoreCase 忽略大小写
m multiline 多行模式,^和$匹配每行的开始和结束
u unicode 启用完整的Unicode支持
y sticky 粘性匹配,从lastIndex开始精确匹配
s dotAll 让.匹配包括换行符的所有字符
d hasIndices 生成匹配结果的开始和结束索引
v unicodeSets 增强的Unicode集合模式(ES2024)

使用示例

javascript 复制代码
// 1. 创建正则表达式
const regex1 = /\d+/g; // 字面量
const regex2 = new RegExp('\\d+', 'g'); // 构造函数

// 2. 测试匹配
console.log(regex1.test("123abc")); // true

// 3. 提取匹配结果
const match = "abc123def456".match(/\d+/g);
console.log(match); // ["123", "456"]

// 4. 替换内容
const replaced = "2023-01-15".replace(/(\d{4})-(\d{2})-(\d{2})/, "$2/$3/$1");
console.log(replaced); // "01/15/2023"

// 5. 使用exec进行迭代(全局匹配时)
const regex = /\d+/g;
let result;
while ((result = regex.exec("a1 b2 c3")) !== null) {
  console.log(`找到 ${result[0]},位置:${result.index}`);
}

这个表格涵盖了 JavaScript 正则表达式的主要 API,包括创建、属性、方法和相关的字符串方法。

相关推荐
长按助力退休1 天前
正则表达式从入门到不懵逼
正则表达式
小白快快跑哦7 天前
python-字符串全解(六):正则表达式-转义与非转义
python·正则表达式·转义与非转义
zx_741484818 天前
【Linux入门】Shell 函数、正则表达式与文本处理:cut 与 awk
linux·运维·正则表达式
Patrick在香港11 天前
Claude Prompt 香港场景:公文里「今日」落在 6 个日历日上,「翌日」锚错了 5 天
python·自然语言处理·正则表达式·claude·数据清洗
梦帮科技13 天前
Next.js 16 模块化单体实战:App Router、领域模块与 Route Handler 分层
css·数据结构·链表·正则表达式·node.js·json·html5
yume_sibai19 天前
正则表达式完全指南(基础语法 + 实战应用 + 性能优化 + 最佳实践)
开发语言·正则表达式·c#
研☆香20 天前
js中使用的正则表达式
开发语言·javascript·正则表达式
2601_9622935325 天前
浅学python | 正则表达式集锦
正则表达式·字符串匹配·python知识·浅学python·ip地址检查
2601_9622955825 天前
Python中正则表达式的知识汇总分享
python·正则表达式·模块·语法·匹配
启观川25 天前
Python基础-第 16 章 综合案例:客户信息管理系统
开发语言·笔记·python·正则表达式