isCreditCardNumber property
bool
get
isCreditCardNumber
Determines whether a given string represents a valid credit card number. Credit card numbers must be numeric and follow the Luhn algorithm.
Implementation
bool get isCreditCardNumber {
var string = this;
string = string.replaceAll(RegExp('[^0-9]+'), '');
if (string.length < 13 || string.length > 19) return false;
var sum = 0;
int digit;
int addend;
var doubled = false;
for (var i = string.length - 1; i >= 0; i--) {
digit = int.parse(string.substring(i, i + 1));
if (doubled) {
addend = digit * 2;
if (addend > 9) {
addend -= 9;
}
} else {
addend = digit;
}
sum += addend;
doubled = !doubled;
}
return sum % 10 == 0;
}