regex JS匹配组或其他任何东西,而不需要将每个字符拆分到自己的组[重复]

z4bn682m  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(107)
    • 此问题在此处已有答案**:

Use of capture groups in String.split() [duplicate](5个答案)
昨天关门了。
我目前有这个javascript代码:

const match = '# test #123;? test'.match(/(#\d+;)|[\s\S]/g);
console.log(match);

我基本上希望正则表达式匹配所有内容,同时对#123;#;之间的任何数字)进行分组。
这在当前是有效的,但会产生如下所示的数组:

[
  '#', ' ',     't',
  'e', 's',     't',
  ' ', '#123;', '?',
  ' ', 't',     'e',
  's', 't'
]

出于性能原因(我在迭代匹配项并将它们连接起来,同时以不同的方式处理#123;),我希望将其余匹配项捕获到单个匹配项中,因此数组应该如下所示:

[ '# test ', '#123;', '? test' ]

我已经多次尝试修改正则表达式来捕获[\s\S],如下所示:/(#\d+;)|[\s\S]+/g以及尝试(.*)的各种组合,但它最终将所有内容捕获到一个组中,使整个正则表达式无用

0lvr5msh

0lvr5msh1#

console.log('# test #123;? test'.split(/(#\d+;)/))

相关问题