Я написал один очень похожий на то, что вы описываете.Они могут быть выполнены как регулярное выражение, и когда оно будет выполнено (по крайней мере, для меня), это было очень полезным достижением.
Чтобы выполнить это, вам нужно использовать функцию регулярных выражений, называемую lookaheads.См. информацию на сайте регулярное выражение.info для всех подробностей.
Второе, что вам нужно, это тестер регулярных выражений в реальном времени, чтобы помочьВы создаете прототип своего регулярного выражения.Я предлагаю вам проверить Рубул .Создайте несколько паролей, которые должны работать, и некоторые, которые не должны работать, и начните с них как отправную точку.
Редактировать: Чтобы уточнить мой комментарий выше.Не каждое из ваших требований может или должно быть решено с помощью регулярных выражений.А именно, требования, которые вы перечислили как:
- Не должны содержать какую-либо последовательность из 3 или более символов, общих с именем пользователя
- Не должны повторять ни один из предыдущих 1 паролей
- Должен быть изменен, если считается, что пароль каким-либо образом взломан
Вероятно, должен обрабатываться отдельно от регулярного выражения проверки основного пароля, так как они очень контекстуальны.« последовательность из 3 или более общих символов с именем пользователя », вероятно, может быть обработана на стороне клиента.Однако два других элемента, вероятно, лучше всего обрабатывать на стороне сервера.