1. 程式人生 > >驗證6種信用卡卡號的程式碼

驗證6種信用卡卡號的程式碼

Function ValidateCreditCard(ByRef pStrNumber, ByRef pStrType)
 ValidateCreditCard = FALSE ' Initialize negative results
 
 ' Clean Credit Card Number (Removes dashes and spaces)
 pStrNumber = ParseDigits(pStrNumber)  
 
 ' Validate number with LUHN Formula
 If Not LUHN(pStrNumber) Then Exit Function
 
 ' Apply rules based on type of card
 Select Case pStrType
  Case "A"
   Select Case Left(pStrNumber, 2)
    Case "34", "37"
     ' Do Nothing
    Case Else
     Exit Function
   End Select
   If Not Len(pStrNumber) = 15 Then Exit Function
  Case "D"
   Select Case Left(pStrNumber, 2)
    Case "36" , "38"
     ' Do Nothing
    Case "30"
     Select Case Left(pStrNumber, 3)
      Case "300", "301", "302", "303", "304", "305"
       ' Do Nothing
      Case Else
       Exit Function
     End Select
    Case Else
     Exit Function
   End Select
   If Not Len(pStrNumber) = 14 Then Exit Function
  Case "Discover"
   If Not Left(pStrNumber, 4) = "6011" Then Exit Function
   If Not Len(pStrNumber) = 16 Then Exit Function
  Case "JCB"
   If Left(pStrNumber, 1) = "3" And Len(pStrNumber) = 16 Then
    ' Do Nothing
   ElseIf Left(pStrNumber, 14) = "2131" And Len(pStrNumber) = 15 Then
    ' Do Nothing
   ElseIf Left(pStrNumber, 14) = "1800" And Len(pStrNumber) = 15 Then
    ' Do Nothing
   Else
    Exit Function
   End If
  Case "M"
   Select Case Left(pStrNumber, 2)
    Case "51", "52", "53", "54", "55"
     ' Do Nothing
    Case Else
     Exit Function
   End Select
   If Not Len(pStrNumber) = 16 Then Exit Function
  Case "V"
   If Not Left(pStrNumber, 1) = "4" Then Exit Function
   If Not (Len(pStrNumber) = 13 or Len(pStrNumber) = 16) Then Exit Function
  Case Else
   ' Unknown Card Type
   Exit Function
 End Select
 
 ' We got this far so the number passed all the rules!
 ValidateCreditCard = True
 
End Function
' ------------------------------------------------------------------------------
Function LUHN(ByRef pStrDigits)
 
 Dim lLngMaxPosition
 Dim lLngPosition
 Dim lLngSum    ' Sum of all positions
 Dim lLngDigit   ' Current digit in specified position
 
 ' Initialize
 lLngMaxPosition = Len(pStrDigits)
 lLngSum = 0
 
 ' Read from right to left
 For lLngPosition = lLngMaxPosition To 1 Step -1
  
  ' If we are working with an even digit (from the right)
  If (lLngMaxPosition - lLngPosition) Mod 2 = 0 Then
  
   lLngSum = lLngSum + CInt(Mid(pStrDigits, lLngPosition, 1))
  
  Else
  
   ' Double the digit
   lLngDigit = CInt(Mid(pStrDigits, lLngPosition, 1)) * 2
   
   ' shortcut adding sum of digits
   If lLngDigit > 9 Then lLngDigit = lLngDigit - 9
   
   lLngSum = lLngSum + lLngDigit
   
  End If
 Next

相關推薦

驗證6信用卡程式碼

Function ValidateCreditCard(ByRef pStrNumber, ByRef pStrType) ValidateCreditCard = FALSE ' Initialize negative results  ' Clean Credit Card Number (Removes

PHP驗證信用卡函數

val 銀行卡 code cti 信用 return php驗證 spa nbsp 1 /** 2 * 驗證銀行卡號是否是信用卡 3 * @param $cardnumber 4 * @return bool 5 */

信用卡

bubuko ast 識別 ima 圖片 info nbsp disco res 卡號規則: 首先,不同信用卡公司遵循特定的編號規則。 Visa:以4開頭,共有13位(很久以前發行過)或16位數字。 MasterCard:以51~56開頭,共有16

信用卡

image img ima info 圖片 信用卡 src .com bubuko 信用卡 卡號

Haskell作業|檢查一個信用卡是否有效

isValid :: Integer -> Bool isValid x = if mod (sum (splitNumGtTen (doubleSecondDigit (formARevList x)))) 10 == 0 then True else False numValid :: [Inte

銀行卡驗證驗證是否存在,型別,歸屬行)

在網上找到了一個銀行卡的驗證,通過阿里的支付寶介面進行校驗,能夠準確識別是否存在,歸屬行,卡號型別是儲蓄卡(DC)還是信用卡(CC)。 介面api:需要傳入的2個引數,卡號cardNo和cardBinCheck https://ccdcapi.alipay.

java高併發系列 - 第17天:JUC中的迴圈柵欄CyclicBarrier常見的6使用場景及程式碼示例

這是java高併發系列第17篇。 本文主要內容: 介紹CyclicBarrier 6個示例介紹CyclicBarrier的使用 對比CyclicBarrier和CountDownLatch CyclicBarrier簡介 CyclicBarrier通常稱為迴圈屏障。它和CountDownLatch很相似,

當你輸入信用卡號碼的時候,有沒有擔心輸錯了而造成損失呢?其實可以不必這麼擔心,因為並不是一個隨便的信用卡號碼都是合法的,它必須通過Luhn演算法來驗證通過。 該校驗的過程:1、從卡號最後一位數字開始,逆

import java.util.Scanner; /** * 當你輸入信用卡號碼的時候,有沒有擔心輸錯了而造成損失呢?其實可以不必這麼擔心, * 因為並不是一個隨便的信用卡號碼都是合法的,它必須通過Luhn演算法來驗證通過。 該校驗的過程: 1、從卡號最後一位數字

基於ANN的6調制信自動調制識別(2ASK、4ASK、2FSK、4FSK、2PSK、4PSK)

電平 自動 仿真 進制數 系統 輸入 ron 附錄 表達式 目的: 實現6種(2ASK、4ASK、2FSK、4FSK、2PSK、4PSK)調制信號自動調制識別。 條件:windows 10,MATLAB 2014a 內容: 本實驗設計了一個分層結構的MLP神經網絡分

顯示行6方法、chkconfig、tar、awk、cut過濾字符串、ps配合wc查看過濾進程

linux 運維 awk sedDay10Georgekai-習慣:操作前備份,操作後檢查 第1章 第二波剩余命令:顯示行號的6種方法、chkconfig、tar、awk、cut過濾字符串、ps配合wc查看過濾進程1.1 打印配置文件nginx.conf內容的行號及內容,該如何做?1.1.1 花括號的作用 {

Java讀取資料夾大小的6方法及程式碼

這篇文章介紹了JAVA讀取資料夾大小的幾種方法例項,有需要的朋友可以參考一下。 (一)單執行緒遞迴方式 package com.taobao.test; import java.io.File; public class TotalFileSizeSequential { pub

PHP中使用Luhn演算法校驗信用卡及借記卡

Luhn演算法會通過校驗碼對一串數字進行驗證,校驗碼通常會被加到這串數字的末尾處,從而得到一個完整的身份識別碼。 我們以數字“7992739871”為例,計算其校驗位: 從校驗位開始,從右往左,偶數位乘2(例如,7*2=14),然後將兩位數字的個位與十位相

C#獲取CPU序列程式碼、硬碟ID、網絡硬體地址等類檔案

using System; using System.Management; namespace CLeopardTestGetIDs { /// <summary> /// 計算機資訊類 /// </summ

資料結構C語言實現之鏈式佇列的6演算法程式碼

#include <stdio.h>#include <stdlib.h>typedef int elemType;/************************************************************************//* 以下是關於佇列連

銀行卡前臺展示+後臺字串處理+銀行卡驗證

A。 前臺把字串展示成:四個一堆四個一堆的樣式: <input class="txt" type="num" placeholder="確認卡號" onkeyup="this.valu

.NET Core 微信公眾小程式6獲取UnionID方法,你知道哪幾

前言 獲取UnionID是開發微信公眾號/小程式中很有必要的一個環節,特別是針對一個公司擁有多個公眾號小程式而推出的機制,實現打通賬戶一體化,用UnionID來區分多平臺的唯一性。 官方的解釋:如果開發者擁有多個移動應用、網站應用、和公眾帳號(包括小程式),可通過 UnionID 來區分使用者的唯一性,因

漲見識了,在終端執行 Python 程式碼6 方式!

原作:[BRETT CANNON](https://snarky.ca/author/brett/) 譯者:豌豆花下貓@Python貓 英文:[https://snarky.ca/the-many-ways-to-pass-code-to-python-from-the-terminal](https:/

6快速統計程式碼執行時間的方法,真香!

我們在日常開發中經常需要測試一些程式碼的執行時間,但又不想使用向 JMH(Java Microbenchmark Harness,Java 微基準測試套件)這麼重的測試框架,所以本文就彙總了一些 Java 中比較常用的執行時間統計方法,總共包含以下 6 種,如下圖所示: ![image.png](https:

URL 去重的 6 方案!(附詳細實現程式碼)

URL 去重在我們日常工作中和麵試中很常遇到,比如這些: ![mj.png](https://cdn.nlark.com/yuque/0/2020/png/92791/1598431969308-51cbe384-f054-4f68-a2ba-f0036bc3cbd4.png#align=left&displ

最優雅退出 Android 應用程序的 6 方式

home鍵 應用 一點 container new 出棧 manage 而且 rec 一、容器式建立一個全局容器,把所有的Activity存儲起來,退出時循環遍歷finish所有Activity import java.util.ArrayList; impor