creditCard static method

String? creditCard(
  1. String? value
)

Validates a credit card number using Luhn algorithm.

Implementation

static String? creditCard(String? value) {
  if (value == null || value.isEmpty) return 'Credit card number is required';

  final cleaned = value.replaceAll(RegExp(r'[\s\-]'), '');

  if (!RegExp(r'^[0-9]{13,19}$').hasMatch(cleaned)) {
    return 'Invalid credit card number length';
  }

  // Luhn algorithm
  int sum = 0;
  bool alternate = false;
  for (int i = cleaned.length - 1; i >= 0; i--) {
    int digit = int.parse(cleaned[i]);
    if (alternate) {
      digit *= 2;
      if (digit > 9) digit -= 9;
    }
    sum += digit;
    alternate = !alternate;
  }

  return (sum % 10 == 0) ? null : 'Invalid credit card number';
}