2016-06-30 3 views
1

Мне нужно регулярное выражение для проверки ввода пароля пользователем через JS в онлайн-форме регистрации. Критерии пароля следующее:Password Regex Issue

  1. должен быть длиннее 8 символов
  2. должны включать, по меньшей мере, 1 номер, 1 строчную букву и 1 заглавную букву
  3. не может включать в фигурные скобки { }
  4. должен допускать любые другие специальные символы (например, @, #, $,%, _, "и т. Д.)
  5. порядок цифр, строчных букв и прописных букв может быть случайным, поэтому он может быть для пример Ab1394 * "или *" bA1394

Я попытался использовать следующее регулярное выражение, однако, если вы вводите какой-либо специальный символ, например '?' перед фигурной скобкой {, это позволило бы как действительный вход Я новичок в использовании регулярных выражений и не очень знакомы, так может быть что-то незначительное в нем:.

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

Может кто-то помочь мне с регулярным выражением для этого или указать какие-либо вопросы в шахте Благодаря

+0

Почему не допускаются фигурные скобки? – SWa

+0

У меня есть ограничение с унаследованной системой, и я не могу позволить этим символам ввести пароль. – user1809790

ответ

3

чтобы легко запретить символы, изменить .{8,} к [^{}]{8,}:

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

или включать любой уполномоченный символ внутри класса:

[a-zA-Z\d,#[email protected]%&\^\$\*\)\(\_\.\'\"\+\-]{8,}