Что делает [2], в данном .match?
[2] вообще не относится к регулярке. Это выбор элемента массива. Так как match в JS (да и во всех реализациях) возвращает массив, то вы просто выбираете 3-ий элемент. Т.е:
/^\/([a-z]*\/[a-z].*?\/[a-z].*?)-(.*).*/
Что у вас там лежит известно только вам.
Но сейчас вы пытаетесь взять второй 3-ий элемент от Null
[2] это доступ по индексу к элементу массива. А ошибка оттого, что регуляркой не найдено ни одного соответствия в тексте.