java校验银行卡号

 1 public class CheckBankCard {
 2     /*
 3     校验过程:
 4     1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
 5     2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,将个位十位数字相加,即将其减去9),再求和。
 6     3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
 7     */
 8         /**
 9         * 校验银行卡卡号
10         */
11        public static boolean checkBankCard(String bankCard) {
12                 if(bankCard.length() < 15 || bankCard.length() > 19) {
13                     return false;
14                 }
15                 char bit = getBankCardCheckCode(bankCard.substring(0, bankCard.length() - 1));
16                 if(bit == ‘N‘){
17                     return false;
18                 }
19                 return bankCard.charAt(bankCard.length() - 1) == bit;
20        }
21
22        /**
23         * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位
24         * @param nonCheckCodeBankCard
25         * @return
26         */
27        public static char getBankCardCheckCode(String nonCheckCodeBankCard){
28            if(nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0
29                    || !nonCheckCodeBankCard.matches("\\d+")) {
30                //如果传的不是数据返回N
31                return ‘N‘;
32            }
33            char[] chs = nonCheckCodeBankCard.trim().toCharArray();
34            int luhmSum = 0;
35            for(int i = chs.length - 1, j = 0; i >= 0; i--, j++) {
36                int k = chs[i] - ‘0‘;
37                if(j % 2 == 0) {
38                    k *= 2;
39                    k = k / 10 + k % 10;
40                }
41                luhmSum += k;
42            }
43            return (luhmSum % 10 == 0) ? ‘0‘ : (char)((10 - luhmSum % 10) + ‘0‘);
44        }  
时间: 2024-10-07 08:08:48

java校验银行卡号的相关文章

身份证校验,前台js校验,后台java校验

js校验: var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁",22:"吉林",23:"黑龙江",31:"上海",32:"江苏", 33:"浙江",34:"安徽",35:"福建"

身份证号正则校验(js校验+JAVA校验)

js校验身份证号[15位和18位] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 8

Java实现银行卡号校验

/** * 通过银行卡BIN号获取银行卡所属银行名称 */public class BankUtil { //传入卡号 得到银行名称 public static String getNameOfBank(String idCard) { int index = -1; if(idCard==null || idCard.length()<16 || idCard.length()>19){ return ""; } //6位Bin号 String cardbin_6 = i

校验银行卡号

1.先引入jquery.js 2.接着引入luhmCheck.js //银行卡号Luhm校验 3.看下面的案例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml&q

java校验时间格式 HH:MM

package com; import java.text.SimpleDateFormat; import java.util.Date; /** * @author Gerrard */ public class CheckTimeHHMM { public static void main(String[] args) { boolean flg = checkTime("8:00"); boolean flg3 = checkTime("24:00"); b

java校验工具类

import java.util.regex.Matcher;   import java.util.regex.Pattern;     /**  * 验证工具类  * @author admin  *  */ public class Validation {       //------------------常量定义       /**       * Email正则表达式="^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0

JS校验银行卡号、输入卡号时放大效果

一.(校验格式) function CheckBankNo(t_bankno) { var bankno = $.trim(t_bankno); if(bankno == "") { layer.msg("请填写银行卡号"); return false; } if(bankno.length < 16 || bankno.length > 19) { layer.msg("银行卡号长度必须在16到19之间"); return fals

JAVA校验字符串中的每个字符是否都在GB2312字符集中

需要在服务器端校验前台表单中传来的字符串,是否符合GB2312编码(所有字符都在GB2312字符集). import java.io.UnsupportedEncodingException; public class EncodingValidationUtil { /** * 校验目标字符串中的字符是否均在GB2312字符集 * @param str * @return */ public static boolean isGB2312(String str) { if(str == nul

java校验表单,正则表达式

package org.mo.open.common.util; /**  * 校验表单工具类  *   * @author moziqi  *  */ public final class RegexValidateUtil { private RegexValidateUtil() { } private static boolean flag = false; private static String regex = ""; /**  * 验证QQ号码  *   * @para