https://imask.js.org/ Пожалуй, самая гибкая библиотека для маскирования инпутов.
- Регулярки
- Имитация "secure" ввода (как у input type password), с возможность ЧАСТИЧНОЙ имитации (###-###-12-23, где решетки - это скрытый ввод)
- Ввод даты и времени, с возможность кастомного форматирования в обе стороны (ввод -> реальные данные и в обработную сторону)
- "on-the-fly" - делаем массив масок, после ввода первых символом либа сама решает, какая маска сейчас правильная (можно использовать для полей ввода типа "телефон/емейл")
- Вложенные маски (пишем $num, в блоках объявляем что такое num в виде вложенной маски)
- Возможность форматировать посредством "pipe" (задействуем возможность конвертации маски->значение и наоборот без инпута, то есть по сути получаем абстрактное апи форматирования по маске)
- Есть готовые плагины под vue, react и т.д. (Хотя можно обойтись и без них, библиотека гибкая и так)