https://imask.js.org/ Пожалуй, самая гибкая библиотека для маскирования инпутов.

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