小编Cro*_*osS的帖子

正则表达式匹配一个额外的空组

我是正则表达式领域的新手。
我在下面发布的所有内容都是我的代码中的简化示例。

我有一个字符串,假设test_1,some_2,foo,bar_4,我要替换为title: test (1) title: some (2) title: foo () title: bar (4)

我现在所拥有的(有效的)是:

var test = "test_1,some_2,foo,bar_4,";
console.log(test.replace(/(.*?)(?:_(\d))?,/g, "title: $1 ($2)\n"));
Run Code Online (Sandbox Code Playgroud)

输出:

title: test (1)
title: some (2)
title: foo ()
title: bar (4)
Run Code Online (Sandbox Code Playgroud)

为了使事情变得正确,我想摆脱最后一个项目后的昏迷。列表看起来像test_1,some_2,foo,bar_4 (bar_4之后无逗号)

所以新的代码:

var test = "test_1,some_2,foo,bar_4";
console.log(test.replace(/(.*?)(?:_(\d))?(?:,|$)/g, "title: $1 ($2) "));
Run Code Online (Sandbox Code Playgroud)

输出错误。最后还有一个空的比赛:

title: test (1)
title: some (2)
title: foo ()
title: bar (4)
title:  ()
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么?如何解决?实际的正则表达式是否有任何可能的改进?

演示jsFiddle

javascript regex

4
推荐指数
1
解决办法
3695
查看次数

标签 统计

javascript ×1

regex ×1