模块 7 · 第 4 课(共 4)课程中的28/32~10 min
模块课程(4/4)
用正则表达式分割
String.prototype.split(separator) 不仅接受固定字符串,还接受
还有一个 regex 作为分隔符。这使其成为标记化的强大工具
结构化文本。
JS
'uno, due,tre quattro'.split(/[,\s]+/);
// ["uno", "due", "tre", "quattro"]正则表达式 /[,\s]+/ 匹配“一个或多个逗号或空格”: split
在任何复合分隔符上分割。
典型案例
- 宽容的 CSV:
text.split(/\s*,\s*/)处理逗号周围的空格。 - 朴素分词器:
text.split(/\s+/)提取单词。 - 保留分隔符:如果正则表达式包含捕获组,则 组的内容包含在结果数组中。
JS
'a=1; b=2; c=3'.split(/(;)\s*/);
// ["a=1", ";", "b=2", ";", "c=3"]如果没有 () 组,分号就会消失。使用 (;) 你可以保留它
在结果中。
在拆分操作中保留分隔符
如果将分割分隔符放在捕获括号内,则 String.prototype.split 的输出将包含分隔符本身作为最终数组中的元素,而不是丢弃它们。
尝试一下
锻炼#regex.m7.l4.e1
尝试:0加载中...
查找每个允许的 CSV 分隔符:逗号周围带有可选空格。这样您就可以在 split 中使用它来标记列表。
正在加载编辑器...
显示提示
在逗号前后使用 \\s* 来吸收任何可选空格。
3 次尝试后可用的解决方案
复习练习
锻炼#regex.m7.l4.e2
尝试:0加载中...
查找每个“空格或分号”分隔符(一个或多个)。这种分割方式会将文本标记为单词。
正在加载编辑器...
显示提示
结合 \\s 和 ;在带有 + 量词的类 [\\s;] 中。
3 次尝试后可用的解决方案
额外的挑战
锻炼#regex.m7.l4.e3
尝试:0加载中...
Write a regex to use in a split that separates numbers while keeping math operators `+`, `-`, `*`, `/` as elements of the array.
正在加载编辑器...
显示提示
Enclose the math operators character class in capture parentheses to preserve them in the split array.
3 次尝试后可用的解决方案