为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2022-12-02 16:18:09
我正在处理 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", "🐒" ]
查看完整描述

4 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

您混淆split了(匹配定界符)和match(匹配内容)。与split您识别实际内容的区别是什么,因此匹配项本身将被排除在外。随着match你得到你真正想要的东西。请注意,match您需要使用g修饰符明确说明您想要所有这些:


let arr = "Hello".match(/\w/g); // You need the g[lobal] modifier

console.log(arr); // ["H","e","l","l","o"]


查看完整回答
反对 回复 2022-12-02
?
撒科打诨

TA贡献1934条经验 获得超2个赞

你不需要正则表达式,你可以拆分一个空字符串来获取字符:


var result = "Hello".split("")


console.log(result)


查看完整回答
反对 回复 2022-12-02
?
MYYA

TA贡献1868条经验 获得超4个赞

这正是你所做的。查找拆分的值是一个单词字符,您可以准确地得到所有字符之间的空格。


console.log("Hello".split(/\w/));


得到你想要的要么使用match


console.log("Hello".match(/\w/g));

console.log("Hello world!".match(/\w/g));


或由空字符串之间的空格分隔。


console.log("Hello".split(''));


查看完整回答
反对 回复 2022-12-02
?
弑天下

TA贡献1818条经验 获得超7个赞

你得到一个空数组的原因是因为它的split()第一个参数搜索一个模式并且在这种情况下模式是一个字符并且拆分是将单词Hello除以每个字符,这就是为什么你得到空字符串来实现你想要使用的分裂(””)


var res = "Hello".split("")

console.log(res)


查看完整回答
反对 回复 2022-12-02
  • 4 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信