Всё не так.
split разбивает строку и результатом будет массив строк. Соответственно, условие
typeof arr[i] === 'number'
никогда не выполнится.
Условие записано неверно и всегда будет давать true.
typeof arr[i] === 'number' & arr.length === 4 || 6
эквивалентно
((typeof arr[i] === 'number') & (arr.length === 4)) || 6
&
- это не логическое И, а побитовое.
forEach у вас смысла не имеет, так как он не использует значение, возвращаемое из каллбэк-функции.
В основной функции нет return'а, значит она всегда возвращает undefined.
Ну и regex'а тут нет.