写一个TypeScript 验证信用卡正确性的算法
时间: 2023-11-30 19:20:41 浏览: 32
以下是一个 TypeScript 实现的 Luhn 算法,可以用于验证信用卡号码的正确性:
```typescript
function validateCreditCardNumber(creditCardNumber: string): boolean {
// 移除空格和破折号
creditCardNumber = creditCardNumber.replace(/[\s-]/g, '');
// 检查是否为数字
if (!/^\d+$/.test(creditCardNumber)) {
return false;
}
// 反转卡号
const digits = creditCardNumber.split('').reverse().map(Number);
// 计算校验和
let sum = 0;
for (let i = 0; i < digits.length; i++) {
let digit = digits[i];
if (i % 2 !== 0) {
digit *= 2;
if (digit > 9) {
digit -= 9;
}
}
sum += digit;
}
// 校验和必须是10的倍数
return sum % 10 === 0;
}
```
该算法使用 Luhn 算法来计算信用卡号码的校验和。它首先移除信用卡号码中的空格和破折号,并确保它只包含数字。然后,它将卡号反转并对每个数字应用 Luhn 算法。最后,它检查校验和是否是10的倍数,如果是,则信用卡号码有效。