Способ ruby, а также простой способ
def password_complexity
if password.present? && password =~ /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d{2})(?=.*[@$!%*?&]{2})[A-Za-z\d@$!%*?&]{7,}$)/
puts "Strong Password"
else
put "Complexity requirement not met. Please use: 1 uppercase, 1 lowercase, 2 digit and 2 special character, 7 characters"
end
end
Если вы хотите изменить регулярное выражение, найдите несколько примеров. Минимум восемь символов, минимум одна буква и одно число:
"^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$"
Минимум восемь символов, как минимум одна буква, одно число и один специальный символ:
"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$"
Минимум восемь символов, как минимум одна заглавная буква, одна строчная буква и одно число:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"
Минимум восемь символов, как минимум одна заглавная буква, одна строчная буква, одно число и один специальный символ:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"
Минимум восемь и максимум 10 символов, минимум одна заглавная буква , одна строчная буква, одно число и один специальный символ:
"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,10}$"
Способ Rails
PASSWORD_FORMAT = /\A
(?=.{7,}) # Must contain 8 or more characters
(?=.*\d) # Must contain a digit
(?=.*[a-z]) # Must contain a lower case character
(?=.*[A-Z]) # Must contain an upper case character
(?=.*[[:^alnum:]]) # Must contain a symbol
/x
validates :password,
presence: true,
length: { in: 15 },
format: { with: PASSWORD_FORMAT },
confirmation: true
Я привел только один пример, который вы можете изменить в соответствии с вашими требованиями. Пожалуйста, прочитайте это для дополнительная информация
https://medium.com/@Timothy_Fell / как установить пароль в rails-d9081926923b