diff --git a/defaultmodules/calendar/calendarutils.js b/defaultmodules/calendar/calendarutils.js index 751dae2d42..a79e4e9832 100644 --- a/defaultmodules/calendar/calendarutils.js +++ b/defaultmodules/calendar/calendarutils.js @@ -109,7 +109,7 @@ const CalendarUtils = { let replacement = transform.replace; if (typeof transform.yearmatchgroup !== "undefined" && transform.yearmatchgroup !== "") { const yearmatch = [...title.matchAll(needle)]; - if (yearmatch[0].length >= transform.yearmatchgroup + 1 && yearmatch[0][transform.yearmatchgroup] * 1 >= 1900) { + if (yearmatch.length > 0 && yearmatch[0].length >= transform.yearmatchgroup + 1 && yearmatch[0][transform.yearmatchgroup] * 1 >= 1900) { const calcage = new Date().getFullYear() - yearmatch[0][transform.yearmatchgroup] * 1; const searchstr = `$${transform.yearmatchgroup}`; replacement = replacement.replace(searchstr, calcage); diff --git a/tests/unit/modules/default/calendar/calendar_utils_spec.js b/tests/unit/modules/default/calendar/calendar_utils_spec.js index 77d358ddfa..ef6da28118 100644 --- a/tests/unit/modules/default/calendar/calendar_utils_spec.js +++ b/tests/unit/modules/default/calendar/calendar_utils_spec.js @@ -151,5 +151,10 @@ describe("Calendar utils tests", () => { const expectedResult = `Luciella (${new Date().getFullYear() - 2000}.)`; expect(transformedTitle).toBe(expectedResult); }); + + it("should not fail when the yearmatchgroup regex does not match", () => { + const transformedTitle = CalendarUtils.titleTransform("Test Birthday", [{ search: "^(.+) \\((\\d{4})\\)$", replace: "$1 ($2)", yearmatchgroup: 2 }]); + expect(transformedTitle).toBe("Test Birthday"); + }); }); });