模块 7 · 第 1 课(共 4)课程中的25/32~12 min
模块课程(1/4)
所有标志的详细信息
现代 JavaScript 中所有可用的 标志 的完整回顾 (ES2024)。标志是修改行为的单个字符 正则表达式;它们可以按任何顺序组合。
| 旗帜 | 名称 | 效果 |
|---|---|---|
g | 全球 | 查找所有匹配项,而不仅仅是第一个(matchAll 需要)。 |
i | 忽略大小写 | 不区分大小写(包括带有 u/v 标志的 Unicode 字符)。 |
m | 多行 | ^ 和 $ 匹配 行 的开头/结尾,而不仅仅是字符串。 |
s | 全部点 | . 还匹配换行符 \n。 |
u | 统一码 | 正确处理代码点 > 0xFFFF 并启用 \\p{...}。 |
v | Unicode 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 次尝试后可用的解决方案