跳转到主要内容
模块 7 · 第 1 课(共 4)课程中的25/32~12 min
模块课程(1/4)

所有标志的详细信息

现代 JavaScript 中所有可用的 标志 的完整回顾 (ES2024)。标志是修改行为的单个字符 正则表达式;它们可以按任何顺序组合。

旗帜名称效果
g全球查找所有匹配项,而不仅仅是第一个(matchAll 需要)。
i忽略大小写不区分大小写(包括带有 u/v 标志的 Unicode 字符)。
m多行^ 和 $ 匹配 行 的开头/结尾,而不仅仅是字符串。
s全部点. 还匹配换行符 \n。
u统一码正确处理代码点 > 0xFFFF 并启用 \\p{...}。
vUnicode v 模式u 的现代扩展,具有集合操作 ([abc&&[def]])。
y粘仅从位置 lastIndex 开始匹配,不跳过。
d有索引结果包括 indices 以及每组的开始/结束。
JS
const re = /foo/gimu; // global + insensitive + multiline + unicode
re.flags; // "gimu" (always in canonical order: dgimsuvy)

典型组合

  • g + i --“查找所有内容,不区分大小写”。 80%的实际用途。
  • g + m -- 逐行匹配多行文本。
  • g + s --“点匹配任何内容,包括换行符”。对于跨多行提取块很有用。
  • u (或 v) -- 如果您正在处理任何语言或表情符号的现实世界文本,则始终。

Unicode v 模式和标志演变

v 标志(在 ES2024 中可用)替换 u 并启用集合上的高级操作,例如字符类交集和减法(例如 [\\p{White_Space}&&\\p{ASCII}])。

尝试一下

锻炼#regex.m7.l1.e1
尝试:0加载中...

查找所有出现的“ciao”,无论大小写。使用正确的标志。

正在加载编辑器...
显示提示

在 g 旁边添加 i 标志(不区分大小写)。

3 次尝试后可用的解决方案

复习练习

锻炼#regex.m7.l1.e2
尝试:0加载中...

查找 `<pre>` 和 `</pre>` 之间的块,即使它包含换行符。您必须使用使点也匹配换行符的标志。

正在加载编辑器...
显示提示

添加 s 标志。也匹配换行符,并使用惰性 .+?停在第一个 </pre> 处。

3 次尝试后可用的解决方案

额外的挑战

锻炼#regex.m7.l1.e3
尝试:0加载中...

Match sequences of ASCII characters, explicitly excluding digits, using Unicode v-mode properties (flag `v`) and set subtraction syntax `[\p{ASCII}--\p{Nd}]+`.

正在加载编辑器...
显示提示

使用 v 标志并写入集合减法 [\\p{ASCII}--\\p{Nd}]+ 来排除数字。

3 次尝试后可用的解决方案