JavaScript 正则表达式:6种核心方法详解
本文系统梳理 JavaScript 中正则表达式的六种核心方法:创建方式、exec、match、test、search、split 和 replace。重点解析 exec 的全局与非全局行为差异、match 的返回值特性,以及 split 和 replace 的实际应用。通过 MDN 示例代码,帮助开发者快速掌握字符串匹配、提取、替换与分割技巧,避免常见陷阱。
正则表达式的创建方式
借助具体的数字“6”来整体记忆,有助于掌握核心要点。
范围
JavaScript 中主要通过两个类来实现正则表达式的功能。

创建
var re = /ab+c/
方式一:使用正则表达式字面量。这种直接表示常量的方式,有助于 JavaScript 解析器优化性能。
var re = new RegExp('ab+c')
方式二:使用构造函数。这种方式允许在运行时动态确定正则表达式的内容,具有更高的灵活性。
常用特殊字符速记
常用特殊字符
为了记忆常用的特殊字符,这里列出正则表达式本身的范畴。如果你经常感到记不住,不必焦虑,因为我也经常需要搜索和在线验证来完成相关任务。这通常是因为练习不足,所谓“唯手熟尔”。以下总结仅列出特殊字符及其分类,尝试口述其含义比单纯查看表格更利于记忆。
- 匹配数量的字符:*、+、?、{n}、{n,}、{n,m}、.
- 匹配位置的字符:^、$
- 匹配并需要分组时,使用括号包裹匹配的模式:(匹配的模式)。
- 匹配条件的字符:|。
- 匹配集合的字符:[]。
- 匹配非集合的字符:[^]。
此外,还有大量由反斜杠和字母组成的具有特殊含义的匹配模式。这些内容在用到时查询即可,无需强行记忆,因为确实难以全部记住。
核心方法实战示例
例子
实例是最好的老师,以下例子来源于 MDN。
获取匹配后的数组。
var myRe = /d(b+)d/g;
myRe.exec('cdbbdbsdbdbz') // ["dbbd", "bb", index: 1, input: "cdbbdbsdbdbz"]
myRe.exec('cdbbdbsdbdbz') // ["dbd", "b", index: 7, input: "cdbbdbsdbdbz"]
myRe.exec('cdbbdbsdbdbz') // null
注意,对于每个正则对象,每次调用 exec 仅返回一个匹配结果。如果需要获取所有匹配项,必须使用 while 循环进行获取,循环结束的标志是返回值为 null。
'cdbbdbsdbdbz'.match(/d(b+)d/g) // ["dbbd", "dbd"]
'cdbbdbsdbdbz'.match(/d(b+)d/) // ["dbbd", "bb", index: 1, input: "cdbbdbsdbdbz"]
string 的 match 方法行为较为特殊:如果是全局匹配(global),则返回所有匹配的数组;如果不是全局匹配,则返回第一个匹配的字符串以及相应的捕获内容。
var str = 'hello world!';
var result = /^hello/.test(str); // true
'cdbbdbsdbdbz'.search(/d(b+)d/) // 1
'xxx'.search(/d(b+)d/) // -1 没有匹配
var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ';
var re = /\s*;\s*/;
var nameList = names.split(re);
// [ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand " ]
var re = /apples/gi;
var str = 'Apples are round, and apples are juicy.';
var newstr = str.replace(re, 'oranges');
// // oranges are round, and oranges are juicy.
判断是否匹配。
var str = 'hello world!';
var result = /^hello/.test(str); // true
仅获取第一次匹配的位置。
'cdbbdbsdbdbz'.search(/d(b+)d/) // 1
'xxx'.search(/d(b+)d/) // -1 没有匹配
按照匹配结果拆分字符串。
var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand ';
var re = /\s*;\s*/;
var nameList = names.split(re);
// [ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand " ]
按照匹配结果覆盖(替换)字符串。
var re = /apples/gi;
var str = 'Apples are round, and apples are juicy.';
var newstr = str.replace(re, 'oranges');
// // oranges are round, and oranges are juicy.
replace 方法的用法较为多样,此处仅展示最基础的使用方式。当有具体需求时再进行查阅即可,先建立整体概念再进行实践,比强行记忆更为有效。
总结
以上介绍了 JavaScript 中正则表达式的六种核心方法,希望对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!
JS split切割后出现空字符串怎么过滤
2026-11-05 16:00:30
在 React 或 Vue 项目中封装使用 JS 节流防抖
2026-11-05 15:27:29
JavaScript中怎么将带小数的字符串转为整数?
2026-11-05 14:32:38
怎么用JavaScript策略模式重构电商促销计算逻辑?
2026-11-05 14:01:09
JS使用constructor判断数据类型可靠吗
2026-11-05 13:49:41
