Перерыл кучу инфы, но не нашел хорошо работающего решения. Пробовал перцептивное хеширование (глупость, да), сейчас рою в сторону opencv.js и подобных фрэймворков, но увы, ничего пока не получается из-за того, что не могу сопоставить последовательность действий. Хелп плес.
const pattern = /^(?=[^А-Яа-я\s]{9,})((?=.*[!@#$%^&*()\-_=+{};:,<.>]){1})(?=[^А-Яа-я\s]+\d|\d)((?=[^А-Яа-я\s]+[a-z]|[a-z]){1})((?=[^А-Яа-я\s]+[A-Z]|[A-Z]){1})[^А-Яа-я\s]+$/;