passwordWithRequirements static method

String? passwordWithRequirements(
  1. String? value, {
  2. int minLength = 8,
  3. bool requireUppercase = false,
  4. bool requireLowercase = false,
  5. bool requireNumber = false,
  6. bool requireSpecial = false,
  7. String? message,
})

Validates password with custom requirements

Example:

Validators.passwordWithRequirements(
  value,
  minLength: 8,
  requireUppercase: true,
  requireLowercase: true,
  requireNumber: true,
  requireSpecial: true,
);

Implementation

static String? passwordWithRequirements(
  String? value, {
  int minLength = 8,
  bool requireUppercase = false,
  bool requireLowercase = false,
  bool requireNumber = false,
  bool requireSpecial = false,
  String? message,
}) {
  if (value == null || value.isEmpty) return null;

  if (value.length < minLength) {
    return message ?? 'Password must be at least $minLength characters';
  }

  if (requireUppercase && !value.contains(RegExp(r'[A-Z]'))) {
    return message ?? 'Password must contain at least one uppercase letter';
  }

  if (requireLowercase && !value.contains(RegExp(r'[a-z]'))) {
    return message ?? 'Password must contain at least one lowercase letter';
  }

  if (requireNumber && !value.contains(RegExp(r'[0-9]'))) {
    return message ?? 'Password must contain at least one number';
  }

  if (requireSpecial && !value.contains(RegExp(r'[!@#$%^&*(),.?":{}|<>]'))) {
    return message ?? 'Password must contain at least one special character';
  }

  return null;
}