## Posted By

Scooter on 03/07/09

# Luhn Algorithm

/ Published in: ASP

For verifying credit card numbers.

`<%    ' Copyright (c) 2008, reusablecode.blogspot.com; some rights reserved.    '    ' This work is licensed under the Creative Commons Attribution License. To view    ' a copy of this license, visit http://creativecommons.org/licenses/by/3.0/ or    ' send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California    ' 94305, USA.     ' Luhn (mod 10) algorithm    function luhn(byVal input)        dim sum        dim odd        dim currentDigit        dim regEx         input = CStr(input)        sum = 0        odd = CBool(len(input) mod 2)         ' Remove any non-numeric characters.        if not isNumeric(input) then            set regEx = new RegExp            regEx.Global = true            regEx.Pattern = "\D"            input = regEx.Replace(input, "")            set regEx = nothing        end if         ' Calculate sum of digits.        for i = 1 to len(input)            currentDigit = cint(mid(input, i, 1))             if odd then                sum = sum + currentDigit            else                if currentDigit * 2 > 9 then                    sum = sum + (currentDigit * 2 - 9)                else                    sum = sum + (currentDigit * 2)                end if            end if             odd = not odd        next         ' Check validity.        if sum mod 10 = 0 then            luhn = true        else            luhn = false        end if    end function     ' Unit test - expected result is true    if luhn("446667651") then        response.write "true"    else        response.write "false"    end if%>`