半角【英小文字、英大文字、数字、記号】4種類より2種類以上を使用した正規表現となっています
さらに、同じ文字列を3文字連続を禁止にしたい場合はどのように書けば良いでしょうか。
ご教示お願いします。
AAA@;:@;:@;:→NG @@@ABCDFABCD→NG AA@@ACDACD→OK
class PasswordValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) a = /\A(?=.*?[a-z])(?=.*?\d)[a-z\d]|(?=.*?[A-Z])(?=.*?\d)[A-Z\d]|(?=.*[!@;:])(?=.*?\d)[!@;:\d]+\z/ b = /\A(?=.*?[a-z])(?=.*?[A-Z])[a-zA-Z]|(?=.*?[a-z])(?=.*[!@;:])[a-z!@;:]+\z/ c = /\A(?=.*?[A-Z])(?=.*[!@;:])[A-Z!@;:]+\z/i password = / #{a}| #{b}| #{c} /x format = password record.errors.add(attribute, :invalid) unless format =~ value end end
回答2件
あなたの回答
tips
プレビュー