次の正規表現を使用して、少なくとも 1 つの大文字、1 つの小文字、1 つの数字、1 つの非英数字 (特殊文字)、および最小限の8文字の。
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$
Rubularで見られるように、正規表現は機能しています。Model_Auth_User
を拡張する Kohana の で使用しているコードを次に示しますORM
。
public function rules() {
return array(
'password' => array(
array('not_empty'),
array('min_length', array(':value', 8)),
array('regex', array(':value', '/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,}$/'))
)
);
}
ただし、新しいユーザー アカウントを作成するとき、または既存のユーザー アカウントのパスワードを変更するとき、この正規表現は完全に無視されるようです。ただし、上記min_length
の行からは正常に機能しています!
test
8文字未満なのでパスワードとして使用testing123
できなくなりますが、エラーメッセージは表示されません。
なぜこれが起こっているのか、それを回避する方法はありますか?