gpt4 book ai didi

javascript正则表达式拆分产生太多项目

转载 作者:行者123 更新时间:2023-11-30 06:57:56 25 4
gpt4 key购买 nike

我正在尝试使用逗号或空格来拆分字符串。逗号前面和/或后面可以有可选的空格,空格本身也算作分隔符。代码如下所示:

var answers= s.split(/(\s*,\s*)|\s+/);

如果 s 包含字符串 'a b,c',我得到一个包含五个项目而不是预期的三个项目的列表(数组):

0:a, 1:undefined, 2:b, 3:,, 4:c

任何关于我做错了什么的建议都将不胜感激。

菲利普

最佳答案

那是因为split也推 capturing groups到结果数组:

If separator is a regular expression that contains capturing parentheses, then each time separator is matched the results (including any undefined results) of the capturing parentheses are spliced into the output array.

ab 之间的空格由空格匹配,因此捕获组未定义。 bc 之间的逗号与组匹配,因此它成为数组的第四项。

要解决这个问题,只需删除捕获组:

var answers = s.split(/\s*,\s*|\s+/);

如果你有一个更复杂的表达式需要分组,你可以像这样让它成为非捕获:

var answers = s.split(/(?:\s*,\s*)|\s+/);

关于javascript正则表达式拆分产生太多项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17516040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com