Один вариант будет использовать вместо .match
и чередовать (не запятые, символы без скобок) и (круглые скобки \(
, за которыми следуют не )
символы, а затем )
).Таким образом, запятые приведут к появлению нового элемента в массиве, только если запятая находится вне скобок:
const str = `Ingrédients Purée de fruits (mangue 25%, banane*), purs jus de fruits (pomme*, fruits de la passion* 18%, orange), 100% des ingrédients agricoles issus de l'agriculture biologique.`;
console.log(
str.match(/(?:[^,(]+|\([^)]+\))+/g)
);
Чтобы дополнительно обрезать начальные пробелы:
const str = `Ingrédients Purée de fruits (mangue 25%, banane*), purs jus de fruits (pomme*, fruits de la passion* 18%, orange), 100% des ingrédients agricoles issus de l'agriculture biologique.`;
console.log(
str.match(/(?:[^ ,(][^,(]+|\([^)]+\))+/g)
);