UNPKG

ng2-validation

Version:
40 lines 1.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var forms_1 = require("@angular/forms"); var lang_1 = require("../util/lang"); exports.creditCard = function (control) { if (lang_1.isPresent(forms_1.Validators.required(control))) return null; var v = control.value; var sanitized = v.replace(/[^0-9]+/g, ''); // problem with chrome if (!(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/.test(sanitized))) { return { creditCard: true }; } var sum = 0; var digit; var tmpNum; var shouldDouble; for (var i = sanitized.length - 1; i >= 0; i--) { digit = sanitized.substring(i, (i + 1)); tmpNum = parseInt(digit, 10); if (shouldDouble) { tmpNum *= 2; if (tmpNum >= 10) { sum += ((tmpNum % 10) + 1); } else { sum += tmpNum; } } else { sum += tmpNum; } shouldDouble = !shouldDouble; } if (Boolean((sum % 10) === 0 ? sanitized : false)) { return null; } return { creditCard: true }; }; //# sourceMappingURL=validator.js.map