导航
×
   ❮   
HTML CSS JavaScript PHP Go ECMS

JavaScript 教程

JS 简介 JS 如何使用 JS 输出 JS 语法 JS 语句 JS 注释 JS 变量 JS 运算符 JS 条件语句 JS 循环 JS 字符串 JS 数字 JS 函数 JS 对象 JS 日期 JS 数组 JS 类型化数组 JS 集合 JS Map 映射 JS Math JS 正则表达式 JS 数据类型 JS 错误 JS 事件 JS 编程 JS 关键字参考 JS 保留关键字参考 JS 运算符参考 JS 运算符优先级 JS UTF-8 字符 JS UTF-8 符号 JS UTF-8 表情符号 JS 版本

JavaScript 正则表达式修饰符标志


正则表达式修饰符标志

标志是可以修改正则表达式模式使用方式的参数,例如使其不区分大小写或全局生效。

/pattern/flags

JavaScript 正则表达式标志

修订于 2025 年 7 月

标志 描述
/d 执行子字符串匹配(2022 年新增)
/g 执行全局匹配(查找所有匹配项)
/i 执行不区分大小写的匹配
/m 执行多行匹配
/s 允许使用点号 (.) 匹配行终止符(2018 年新增)
/u 启用 Unicode 支持(2015 年新增)
/v /u 标志的升级,以获得更好的 Unicode 支持(2025 年新增)
/y 执行"粘性"搜索(2015 年新增)

标志语法:/pattern/flags

/ 正则表达式的起始分隔符
pattern 正则表达式(搜索条件)
/ 正则表达式的结束分隔符
flags 一个或多个单修饰符标志

正则表达式 /g 标志(Global 全局)

/g 标志会匹配模式的所有出现位置,而不仅仅是第一个。

示例

在字符串中全局搜索"is":

let text = "Is this all there is?";
const pattern = /is/g;

let result = text.match(pattern);

亲自试一试 »


正则表达式 /i 标志(不区分大小写)

/i 标志使匹配不区分大小写:/abc/i 匹配 "abc", "AbC", "ABC"。

示例

在字符串中不区分大小写地搜索 "w3schools":

let text = "Visit W3Schools";
const pattern = /is/g;

let result = text.match(pattern);

亲自试一试 »


正则表达式 /d 标志

/d 标志指定匹配的开始和结束位置。

示例

匹配所有以 aa 或 bb 开头或结尾的子文本:

let text = "aaaabb";
const pattern = /(aa)(bb)/d;

let result = text.match(pattern);
亲自试一试 »

正则表达式 /s 标志(单行/点号全部匹配)

/s 标志允许点号 (.) 元字符除了匹配任何其他字符外,还能匹配换行符 ()。

示例

如果没有 /s 标志,则不匹配 .(通配符):

let text = "LineLine.";
const pattern = /Line./gs;

let result = text.match(pattern);
亲自试一试 »

正则表达式 /y 标志(粘性搜索):

/y 标志会从正则表达式对象的 lastIndex 属性开始执行"粘性"搜索。

/y 标志允许匹配从上次匹配结束的确切位置开始。

示例

let text = "abc def ghi";
const pattern = /\w+/y;

// 从第 4 位开始对比
pattern.lastIndex = 4;
let result = text.match(pattern);
亲自试一试 »

必须设置 /y 标志才能允许从指定位置进行匹配。

以下操作无效:

let text = "abc def ghi";
const pattern = /\w+/;

// 从第 4 位开始对比
pattern.lastIndex = 4;
let result = text.match(pattern);
亲自试一试 »

注意

上面的示例使用了正则表达式元字符 /\w+/。

元字符 /\w+/ 的意思是"匹配任何单词"。

您将在接下来的章节中学习更多关于元字符的内容。


正则表达式 /u 标志(Unicode)

/u 标志启用正则表达式的完整 Unicode 支持。

默认情况下,JavaScript 正则表达式会将 4 字节的 Unicode 字符(例如表情符号或不太常用的符号)视为两个独立的 2 字节"代理"代码单元。

/u 标志会将模式视为 Unicode 代码点序列,这对于正确处理基本多文种平面 (BMP) 之外的字符至关重要。

示例

let text = "䷀";
const pattern = /\u{04DC0}/u;

// 返回 true:
let result = pattern.test(text);
亲自试一试 »

如果没有 /u 标志,正则表达式将无法识别 Unicode。

示例

let text = "䷀";
const pattern = /\u{04DC0}/;

// 返回 false:
let result = pattern.test(text);
亲自试一试 »

注意

JavaScript 2025 引入了 /v 标志,作为 /u 标志的"升级"。

/v 标志 启用了更多与 Unicode 相关的功能。


正则表达式 /v 标志(Unicode 集)

/v 标志是对 /u 标志的升级,旨在提供更好的 Unicode 支持。

它启用了更多与 Unicode 相关的功能。

新增功能包括:

  • \p 转义序列匹配的是字符串,而不仅仅是字符。
  • 字符类已升级,支持交集、并集和减法语法,以及匹配多个 Unicode 字符。

示例

let text = "Hello 😄";
const pattern = /\p{Emoji}/v;

// 返回 true:
let result = pattern.test(text);
亲自试一试 »

如果没有 /v 标志,正则表达式将无法识别 Unicode。

示例

let text = "Hello 😄";
const pattern = /\p{Emoji}/;

// 返回 false:
let result = pattern.test(text);
亲自试一试 »

正则表达式分组修饰符 (?flag)

(?flag) 语法是一种分组修饰符(内联标志修饰符)。

它允许修改模式中某个部分的标志,而不是整个模式。

(?flags:pattern) 仅对分组中的模式启用标志。

示例

i 标志仅对模式中的 W3Schools 部分启用。

let text = "W3Schools tutorials.";
const pattern = /(?i:WShools) tutorials/;

// 返回 true:
let result = pattern.test(text);
亲自试一试 »

i 标志仅对模式中的 W3Schools 部分启用。

let text = "W3Schools Tutorials.";
const pattern = /(?i:W3Sshools) tutorials/;

// 返回 false:
let result = pattern.test(text);
亲自试一试 »

JavaScript 正则表达式标志属性

修订于 2025 年 7 月

属性 描述
global 如果设置了 /g 标志,则返回 true
hasIndices 如果设置了 /d 标志,则返回 true
ignoreCase 如果设置了 /i 标志,则返回 true
multiline 如果设置了 /m 标志,则返回 true
dotAll 如果设置了 /s 标志,则返回 true
sticky 如果设置了 /y 标志,则返回 true
unicode 如果设置了 /u 标志,则返回 true
unicodeSets 如果设置了 /v 标志,则返回 true

dotAll 属性

dotAll 属性在设置了 /s 标志时返回 true

示例

const pattern = /W3Schools/s;

let result = pattern.dotAll;
亲自试一试 »

global (全局)属性

global 属性在设置 /g 标志时返回 true

示例

const pattern = /W3Schools/g;

let result = pattern.global;
亲自试一试 »

hasIndices 属性

hasIndices 属性在设置了 /d 标志时返回 true

示例

const pattern = /W3Schools/d;

let result = pattern.hasIndices;
亲自试一试 »

ignoreCase 属性

ignoreCase 属性在设置了 /i 标志时返回 true

示例

const pattern = /W3Schools/i;

let result = pattern.ignoreCase;
亲自试一试 »

multiline (多行)属性

multiline 属性在设置 /m 标志时返回 true

示例

const pattern = /W3Schools/m;

let result = pattern.multiline;
亲自试一试 »

sticky (粘性)属性

sticky 属性在设置 /y 标志时返回 true

示例

const pattern = /W3Schools/y;

let result = pattern.sticky;
亲自试一试 »

unicode 属性

unicode 属性在设置了 /u 标志时返回 true

示例

let text = "䷀";
const pattern = /\u{04DC0}/u;

let result = pattern.unicode;
亲自试一试 »

unicodeSets 属性

unicodeSets 属性在设置了 /v 标志时返回 true

示例

let text = "Hello 😄";
const pattern = /\p{Emoji}/v;

let result = pattern.unicodeSets;
亲自试一试 »

正则表达式方法

正则表达式的搜索替换可以使用不同的方法。

以下是最常用的方法:

字符串方法

方法 描述
match(regex) 返回结果数组
matchAll(regex) 返回结果迭代器
replace(regex) 返回一个新的字符串
replaceAll(regex) 返回一个新的字符串
search(regex) 返回第一个匹配项的索引
split(regex) 返回一个结果数组

正则表达式方法

方法 描述
regex.exec() 返回结果迭代器
regex.test() 返回 true 或 false


freew3c.com 中文网是独立运营的中文开发者学习平台,与 freew3c.com 无关联。提供的内容仅用于学习和测试,不保证内容的正确性。


Copyright @2020-2026 京ICP备888888号-8