判断银行卡号格式是否正确
Posted 牛皮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断银行卡号格式是否正确相关的知识,希望对你有一定的参考价值。
/** * Created by Administrator on 2016/9/18. * 验证银行卡格式是否正确 */ public class CheckIdCard { /** * 校验银行卡卡号 * * @param cardId * @return */ public static boolean checkBankCard(String cardId) { char bit = getBankCardCheckCode(cardId .substring(0, cardId.length() - 1)); if (bit == ‘N‘) { return false; } return cardId.charAt(cardId.length() - 1) == bit; } /** * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位 * * @param nonCheckCodeCardId * @return */ public static char getBankCardCheckCode(String nonCheckCodeCardId) { if (nonCheckCodeCardId == null || nonCheckCodeCardId.trim().length() == 0 || !nonCheckCodeCardId.matches("\\d+")) { // 如果传的不是数据返回N return ‘N‘; } char[] chs = nonCheckCodeCardId.trim().toCharArray(); int luhmSum = 0; for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) { int k = chs[i] - ‘0‘; if (j % 2 == 0) { k *= 2; k = k / 10 + k % 10; } luhmSum += k; } return (luhmSum % 10 == 0) ? ‘0‘ : (char) ((10 - luhmSum % 10) + ‘0‘); } }
以上是关于判断银行卡号格式是否正确的主要内容,如果未能解决你的问题,请参考以下文章