因為用到信用卡驗證,就找了一下,找到以下知識及函數,先普及一下知識:
Luhn 檢驗數字算法(Luhn Check Digit Algorithm,Luhn Algorithm,LUHN Formula)
Luhn 檢驗數字算法(Luhn Check Digit Algorithm),也叫做模數10公式,是一種簡單的算法,用於驗證銀行卡、信用卡號碼的有效性的算法。對所有大型信用卡公司發行的信用卡都起作用,這些公司包括美國ExPRess、護照、萬事達卡、Discover和用餐者俱樂部等。這種算法最初是在20世紀60年代由一組數學家制定,現在Luhn 檢驗數字算法屬於大眾,任何人都可以使用它。
算法:將每個奇數加倍和使它變為單個的數字,如果必要的話通過減去9和在每個偶數上加上這些值。如果此卡要有效,那麼,結果必須是10的倍數。
函數:
程序代碼
<%
' 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("9558821402001225732") then
response.write "true"
else
response.write "false"
end if
%>
注:卡號是百度上隨便搜的,如有不妥敬請告知。有需要此函數的朋友可以自行搜索或者拿自己卡號做測試。