^
- это якорь для начала строки. Конец строки разделяется с помощью $
:
public function valid_password($password) {
return preg_match('~^.{3,14}$~', $password);
}
Но в этом случае я бы не использовал регулярное выражение, а вместо этого функцию strlen
:
public function valid_password($password) {
$length = strlen($password);
return $length >= 3 && $length <= 14;
}
Если вам нравится взламывать, чтобы сохранить эту строку:
public function valid_password($password) {
return isset($password[2]) && !isset($password[14]);
}
Но на самом деле, почему вы хотите ограничить длину пароля до 14 символов? Таким образом, вы не позволяете людям выбирать действительно надежные пароли. Вы, вероятно, должны поднять этот предел.