2015-06-03 4 views
2

У меня есть следующее регулярное выражение:Регулярное выражение для силы пароль одним специальными символами, кроме Underscore

^.*(?=^.{8,}$)(?=.*\d)(?=.*[[email protected]#$%^&*-])(?=.*[A-Z])(?=.*[a-z]).*$

Я использую его, чтобы проверить для
По крайней мере одна буква
хотя бы одна заглавная буква
не более одного номера
наименее специальные символы
наименее 8 символов

Но вместе с этим мне нужно ограничить подчеркивание (_). Если я ввожу пароль Pa$sw0rd, это верно проверяется, что верно. Если я вхожу Pa$_sw0rd, это также верно проверяется, что неправильно.

Дело в том, что регулярное выражение проходит, когда выполняются все правила. Я хочу, чтобы правило ограничивало подчеркивание вместе с выше.

Любая помощь будет очень заметной.

+0

там не должно быть '_' ?????? – vks

+0

Имея одно регулярное выражение для каждого из требований, все это упростило бы кодирование, понимание, обновление и поддержку. – Kusalananda

ответ

1

Я думаю, что вы можете использовать отрицание класса символов [^_]* добавить это ограничение (также, удалить первоначальный .*, он является излишним, и первым взглядом вперед уже в начале картины, нет необходимости дублировать ^ и это совершенно излишним, так как общее ограничение длины может быть проверено в конце):

^(?=.*\d)(?=.*[[email protected]#$%^&*-])(?=.*[A-Z])(?=.*[a-z])[^_]{8,}$ 

См demo

+0

Это сработало для меня Большое спасибо за быструю помощь – vinod

+0

Добро пожаловать. Примите ответ, если он сработает для вас (отметьте слева внизу стрелку вниз). –

1
^(?=.*?\d)(?=.*?[[email protected]#$%^&*-])(?=.*?[A-Z])(?=.*?[a-z])(?!.*_).{8,}$ 

Вы можете попробовать это. .* при запуске бесполезен. Смотрите демо.

https://regex101.com/r/pG1kU1/34

+2

Вы добавляете еще один внешний вид с '. *', Что снижает производительность. –

+0

@stribizhev yups, но я чувствую добавление ответа, который показывает другой способ или новый метод, чтобы иметь дело с одной и той же вещью, хотя не такая же производительность, если хорошо :) добавляет к котенку знаний :) – vks

Смежные вопросы