JavaScript - 为什么使用 RegEx 拆分会产生空白数组?

我正在处理 RegEx 问题,但刚遇到一些意外行为。

如果我将单词“Hello”拆分为单词 cherters ( \w),我会得到一个空字符串数组:


"Hello".split(/\w/)


Array(6) [ "", "", "", "", "", "" ]

我希望你好。

为什么会这样?

我可以使用什么 RegEx 来创建所需的结果?


编辑

我想使用 RegEx 的全部原因是因为我有一个包含表情符号的字符串,Hello 🐒例如,我想拆分字符串但保持表情符号 (Unicode) 完整。

我应该先解释一下。


谢谢大家的帮助,在我意识到两者之间的区别之后,我match也split没有花很长时间来解决表情符号问题:


"Hello 🐒".match(/(\w)|([^\u0000-\u007F]+)/g)


Array(6) [ "H", "e", "l", "l", "o", "🐒" ]


慕桂英3389331
浏览 91回答 4
4回答

哆啦的时光机

您混淆split了(匹配定界符)和match(匹配内容)。与split您识别实际内容的区别是什么,因此匹配项本身将被排除在外。随着match你得到你真正想要的东西。请注意,match您需要使用g修饰符明确说明您想要所有这些:let arr = "Hello".match(/\w/g); // You need the g[lobal] modifierconsole.log(arr); // ["H","e","l","l","o"]

撒科打诨

你不需要正则表达式,你可以拆分一个空字符串来获取字符:var result = "Hello".split("")console.log(result)

MYYA

这正是你所做的。查找拆分的值是一个单词字符,您可以准确地得到所有字符之间的空格。console.log("Hello".split(/\w/));得到你想要的要么使用matchconsole.log("Hello".match(/\w/g));console.log("Hello world!".match(/\w/g));或由空字符串之间的空格分隔。console.log("Hello".split(''));

弑天下

你得到一个空数组的原因是因为它的split()第一个参数搜索一个模式并且在这种情况下模式是一个字符并且拆分是将单词Hello除以每个字符,这就是为什么你得到空字符串来实现你想要使用的分裂(””)var res = "Hello".split("")console.log(res)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript