@stacksjs/ts-validation
Version:
A simple TypeScript starter kit using Bun.
26 lines • 607 B
TypeScript
export default function isLuhnNumber(str: string): boolean {
assertString(str)
const sanitized = str.replace(/[- ]+/g, '')
let sum = 0
let digit
let tmpNum
let shouldDouble
for (let i = sanitized.length - 1; i >= 0; i--) {
digit = sanitized.substring(i, (i + 1))
tmpNum = Number.parseInt(digit, 10)
if (shouldDouble) {
tmpNum *= 2
if (tmpNum >= 10) {
sum += ((tmpNum % 10) + 1)
}
else {
sum += tmpNum
}
}
else {
sum += tmpNum
}
shouldDouble = !shouldDouble
}
return !!((sum % 10) === 0 ? sanitized : false)
};