JS 正则表达式 MatchAll 与逗号和分号的组合

问题描述 投票:0回答:1

我要求 js 正则表达式应该从 String 返回对象。

字符串:

'A: 100 - 200, B: Test & Test2, Tes3, C: 40, D: 11 22, E: E 444,55E'

输出:

{
A: '100 - 200',
B: 'Test & Test2, Tes3',
C: '40',
D: '11 22',
E: 'E 444,55E'
}

我尝试使用以下正则表达式。

const regexp = /([^:]+): ?([^,]*),? ?/g;

但是输出不正确。 E 的值是错误的。

{A: '100 - 200', B: 'Test & Test2', Tes3C: '40', D: '11 22', E: 'E 444'} 
javascript regex
1个回答
0
投票

您可以拆分字符串并获取对象的各个部分。

const
    string = 'A: 100 - 200, B: Test & Test2, Tes3, C: 40, D: 11 22, E: E 444,55E',
    parts = string.split(/, (?=[^,]:)/),
    result = Object.fromEntries(parts.map(s => s.match(/([^:]+): (.*)/).slice(1)));

console.log(result);

© www.soinside.com 2019 - 2024. All rights reserved.