Ваша проблема в том, что если строка text
не соответствует регулярному выражению, то функция сопоставления возвращает ноль, для которого нет [1].Вы должны сохранить результат совпадения в переменной и определить, является ли он нулевым или нет, прежде чем пытаться получить [1].
let resultProduct = text.match(new RegExp(product + '\\s(\\w+)', 'i'));
if (resultProduct != null) {
resultProduct = resultProduct[1];
}
Если совпадение обнаружило что-то, то код идет внутри if изахватывает [1] из него.Если это не так, то он равен null и не входит в if и ваш следующий if, затем проверяет, имеет ли значение resultProduct значение null, что и есть.
Это необходимо сделать как для соответствия продукта, так и для модели.