diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts
index 85000b4448..c1ed987766 100644
--- a/src/lib/utils/index.ts
+++ b/src/lib/utils/index.ts
@@ -68,12 +68,26 @@ export const replaceTokens = (content, sourceIds, char, user) => {
});
if (Array.isArray(sourceIds)) {
- sourceIds.forEach((sourceId, idx) => {
- const regex = new RegExp(`\\[${idx + 1}\\]`, 'g');
- segment = segment.replace(
- regex,
- ``
- );
+ // Match both [1], [2], and [1,2,3] forms
+ const multiRefRegex = /\[([\d,\s]+)\]/g;
+ segment = segment.replace(multiRefRegex, (match, group) => {
+ // Extract numbers like 1,2,3
+ const indices = group
+ .split(',')
+ .map((n) => parseInt(n.trim(), 10))
+ .filter((n) => !isNaN(n));
+
+ // Replace each index with a tag
+ const sources = indices
+ .map((idx) => {
+ const sourceId = sourceIds[idx - 1];
+ return sourceId
+ ? ``
+ : match;
+ })
+ .join('');
+
+ return sources;
});
}