isCreditCard property

bool get isCreditCard

Returns true if string is a valid credit card number

Implementation

/// Returns true if string is a valid credit card number
bool get isCreditCard {
  final clean = this.replaceAll(RegExp(r'[^0-9]'), '');
  if (clean.length < 13 || clean.length > 19) return false;

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