Подтвердить что ты не робот

Проверка пароля с помощью Regex

Я работаю над приложением Rails 3, которое должно проверять пароль на основе следующих критериев: must be at least 6 characters and include one number and one letter.

Вот мое Regex:

validates :password, :format => {:with => /^[([a-z]|[A-Z])0-9_-]{6,40}$/, message: "must be at least 6 characters and include one number and one letter."}

Прямо сейчас, если я вложу пароль (например: dogfood), он пройдет. Но то, что мне нужно, это передать вышеприведенные критерии.

Я не так хорош в regex, поэтому всякая помощь очень ценится!

4b9b3361

Ответ 1

Используйте утверждения lookahead:

/^(?=.*[a-zA-Z])(?=.*[0-9]).{6,}$/
  |             |          |
  |             |          |
  |             |          Ensure there are at least 6 characters.
  |             |
  |             Look ahead for an arbitrary string followed by a number.
  |                        
  Look ahead for an arbitrary string followed by a letter.

Технически в этом случае вам не нужны якоря, но это хорошая привычка их использовать.