JavaScript正则表达式RegExp创建方式与核心属性方法详解

Ruby
Ruby
发布时间:2026-10-13| 3人浏览过
原创

在JavaScript中,ECMAScript通过RegExp类型支持正则表达式。本文将深入解析RegExp的两种创建方式、常用标记(Flags)、实例属性含义以及核心的exec()方法,帮助开发者准确掌握并应用正则表达式。

RegExp基础与创建方式

JavaScript中的正则表达式可以通过两种主要方式定义,两者功能等效但语法结构不同。

第1步:使用字面量定义

这是最常用的方式,直接通过斜杠包裹模式来创建:

let expression = /pattern/flags;
  • Pattern:包含具体的匹配规则(字符类、限定符等)。
  • Flags:可选的行为标记,控制正则的执行模式。

第2步:使用RegExp构造函数定义

当正则表达式的模式需要动态生成时,可使用构造函数:

// 创建等效于 /[bc]at/i 的正则
let pattern2 = new RegExp("[bc]at", "i");

注意**:构造函数接收的参数均为String类型。由于字符串本身需要进行转义,因此在构造函数模式下,反斜杠通常需要“二次转义”。例如,若要匹配单个换行符 n,在字面量中写为/\n/,而在构造函数中需写成"\\n"。

第3步:基于现有实例创建

构造函数也可以接受已有的RegExp对象作为第一个参数,从而复制其模式与标记:

const rel = /cat/g;
const re2 = new RegExp(rel);
// re2 同样为 /cat/g

常用的Flags(标记)

标记位于正则表达式的末尾,用于修饰匹配行为:

  • g (global):全局搜索,返回所有匹配而非仅第一个。
  • i (ignoreCase):忽略大小写匹配。
  • m (multiline):多行模式,使^和$匹配每一行的首尾。
  • y (sticky):粘附模式,只从lastIndex指定的位置开始匹配。
  • u (unicode):启用Unicode模式,正确处理大于FFFF的字符。
  • s (dotAll):点通配符.可以匹配包括\n在内的任意字符。

RegExp实例属性

每个RegExp实例都包含描述其模式和状态的属性:

  • source:返回正则表达式的原文字符串(不含两端的斜杠),不包含构造函数的额外转义。
  • flags:返回组合后的标记字符串,如"gi"。
  • global, ignoreCase, multiline, unicode, sticky, dotAll:分别对应各标记的布尔状态。
  • lastIndex:当前执行匹配的位置索引,通常在带g或y标记时使用。

核心方法:exec()

exec()是RegExp提供的主要提取匹配数据的方法,尤其适合配合捕获组使用。它返回一个包含详细信息的数组或null。

let text = 'mom and dad and baby';
let pattern = /mom( and dad(and baby)?)?/gi;
let matches = pattern.exec(text);

console.log(matches.index); // 0, 起始位置
console.log(matches.input); // "mom and dad and baby"
console.log(matches[0]);    // "mom and dad and baby", 完整匹配
console.log(matches[1]);    // " and dad and baby", 第1个捕获组

返回值特征:

  • matches[0]:整个模式的匹配结果。
  • matches[n]:第n个捕获组的匹配内容(若无捕获组则为空)。
  • matches.index:匹配在原字符串中的起始位置。
  • matches.input:原字符串的引用。

元字符转义规则

当需要匹配括号[]、点号.、反斜杠\等特殊字符本身时,必须使用反斜杠进行转义。例如要匹配字面量的"[bc]at",写法如下:

let pattern2 = /\[bc\]at/i;

若使用构造函数,由于\在JS字符串中也是转义符,因此需写成双重反斜杠:new RegExp("\\[bc\\]at", "i")。

以上就是JavaScript通过RegExp使用正则表达式的详细内容,更多关于JavaScript RegExp使用方法与进阶技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。