creditCard static method

String? creditCard(
  1. String? value, {
  2. String? message,
})

Validates credit card number (Luhn algorithm)

Example:

Validators.creditCard('4111111111111111');

Implementation

static String? creditCard(String? value, {String? message}) {
  if (value == null || value.isEmpty) return null;
  final digits = value.replaceAll(RegExp(r'\D'), '');
  if (digits.length < 13 || digits.length > 19) {
    return message ?? 'Invalid credit card number';
  }

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

  if (sum % 10 != 0) {
    return message ?? 'Invalid credit card number';
  }
  return null;
}