function prevClick() {
view.innerHTML = makeCalendar(--currentMonth);
view.querySelector('#prev').addEventListener('click', prevClick);
}
view.querySelector('#prev').addEventListener('click', prevClick);
view.addEventListener('click', e => {
if (e.target.matches('#prev')) {
view.innerHTML = makeCalendar(--currentMonth);
}
if (e.target.matches('#next')) {
view.innerHTML = makeCalendar(++currentMonth);
}
});
typeof +a(1)(2)(3)(4)(5); // "number"
Но даже и в случае ограниченного множества символов всё равно можно будет вводить неправильные комбинации допустимых - арабские цифры до русских букв, буквы после арабских цифр и т.д.
Думаю, что здесь следует воспользоваться чем-нибудь вроде inputmask. Плюс отдельно проверять наличие тех или иных частей номера документа и в соответствие с проверкой менять содержимое тултипа. Например, так.