Моя строка в формате "[111-11] текст здесь с цифрами 111, [222-22-22]; 333-33 текст здесь", и я хочу разобрать, чтобы у меня был код [111-11][222-22-22], [333-33] и соответствующий текст.У меня нет фиксированного сплиттера, за исключением кода xxx-xx или xxx-xx-xx.
Я пытался таким образом, но он не может получить цифры в части desc.\ D получит что угодно, кроме цифр.
let text = "[111-11] text here with digits 111, [222-22-22]; 333-33 text here";
let codes=[];
let result = text.replace(/(\d{3}(-\d{2})+)(\D*)/g,(str, code, c, desc) => {
desc = desc.trim().replace(/[\[\]']+/g,'');
if (code) codes.push({'code':code.trim(),'desc': desc});
return str;
}); //parse and split codes
Наконец, я хочу получить результат в этом стиле:
[{code:'111-11', desc:'text here with digits 111'},
{code:'222-22-22', desc:''},
{code:'333-33', desc:'text here'}]
Я очень ценю помощь.