After trying out several options (thaks to everyoe that helped!), my choice was usig a regular experssion:
protected function validator(array $data)
{
$rules = [
'first_name' => ['required', 'string', 'max:255'],
'last_name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'confirmed', 'regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{6,}$/'],
'password_confirmation' => ['required', 'same:password'],
'accept' => ['accepted'],
];
$messages = [
'first_name.required' => 'The "First name" field is required',
'last_name.required' => 'The "Last name" field is required',
'email.required' => 'Please provide a valid email address',
'email.email' => 'The email address you provided is not valid',
'email.unique' => 'The email address you provided is already in use',
'password.required' => 'A password is required',
'password.min' => 'The password must have at least :min characters',
'password.regex' => 'Include uppercase and lowercase letters, at least one number and one symbol (special character)',
'accept.required' => 'You must accept the Terms & conditions of service'
];
return Validator::make($data, $rules, $messages);
}