最近做公司的项目遇到银行卡号匹配开户银行的问题,一开始是正则匹配银行卡号码,开户银行银行自己填写,后来用户又让改,说要自动匹配开户银行,唉,用户都是大哥,让改就要改……话不多说,上代码。

自己寻思了半天,上网看了一些大神的思路,最后做出来,开户银行系统匹配,银行卡号码使用正则来验证,以下添加两种验证方法,在线验证是后来补充的。

方法一:三方插件,可以匹配银行卡号和开户银行

其中要引用两个js文件,链接地址如下:https://pan.baidu.com/s/1M4OW7Yi7JaIMA6GYr4Jv6g

form表单里的引用,因为我这里是使用ajax提交的,所以展示给用户的使用的p标签,实际的值是表单隐藏域:

<!-- form 表单 -->
<div class="row cl"><label class="form-label col-xs-4 col-sm-2">开户银行</label><div class="formControls col-xs-8 col-sm-9"><input type="hidden" name="b_name"><p id="b_name" style="color:red;margin-top:5px">输入卡号自行匹配</p></div><div class="col-xs-8 col-sm-6 col-xs-offset-4 col-sm-offset-2"> </div>
</div>
//依赖于js库,不要忘记引用哦,这里我就没有提供js库啦
<script src="__STYLE__/js/luhmCheck.js"></script>
<script src="__STYLE__/js/bankcard.js"></script><script>
$(function(){//银行卡验证$("input[name='b_card']").blur(function(){  if($("input[name='b_card']").val() != ""){             if($(".b_card").length < 15 || $(".b_card").length > 20) {alert("银行卡号长度必须在16到19之间!");return false;}var num = /^\d*$/; //全数字if(!num.test($(".b_card").val())) {alert("银行卡号必须全为数字!");return false;}//开头6位var strBin ="10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99";if(strBin.indexOf($(".b_card").val().substring(0,2)) == -1) {alert("银行卡号开头6位不符合规范!");return false;}//Luhm校验(新) luhmCheck()是验证银行卡号码正误的if(!luhmCheck($(".b_card").val())){alert("银行卡号码有误!");return false;}else{//这里是展示给用户看得银行卡开户名以及传递给表单隐藏域的bankCardAttribution()方法就是自动匹配开户银行的var b_name = bankCardAttribution($(".b_card").val());$("input[name='b_name']").val(b_name['bankName']);$("#b_name").text(b_name['bankName']); }}else{alert("请输入银行卡号码!");return false;           }  });
});
</script>

关于银行卡开户银行的匹配,js封装的字段在谷歌浏览器中使用(console.log)打印如下:

方法二:在线调用支付宝验证接口验证,这种方法可以避免银行新增的时候我们本地插件不完整这种情况发生

<input type="text" name="bank" id="bank" autocomplete="off" class="layui-input">
//银行卡验证
$("#bank").blur(function(){var value = $(this).val(); //获取当前输入框的值$.post("https://ccdcapi.alipay.com/validateAndCacheCardInfo.json",{cardNo:value,cardBinCheck:'true'},function(res){         //console.log(res); //不清楚返回值的打印出来看//{"cardType":"DC","bank":"ICBC","key":"622200****412565805","messages":[],"validated":true,"stat":"ok"}if(res.validated){layer.msg('银行卡号正确',{icon:6});return true; }else{layer.msg('银行卡号错误',{icon:5});setTimeout($("#bank").focus(),1); //获取焦点                   return false;  }},'json');
});//银行及其简称,注意数组式json格式哈,取值方法略需修改
var bankList = {PSBC: "中国邮政储蓄银行",  ICBC: "中国工商银行", ABC: "中国农业银行",  BOC: "中国银行", CCB: "中国建设银行",    COMM: "中国交通银行",      CMB: "招商银行",CMBC: "中国民生银行",CEB: "中国光大银行",CITIC: "中信银行",HXBANK: "华夏银行",SPABANK: "深发/平安银行",CIB: "兴业银行",SHBANK: "上海银行",      SPDB: "浦东发展银行",GDB: "广发银行",BOHAIB: "渤海银行",GCB: "广州银行",JHBANK: "金华银行",WZCB: "温州银行",HSBANK: "徽商银行",JSBANK: "江苏银行",NJCB: "南京银行",NBBANK: "宁波银行",BJBANK: "北京银行",BJRCB: "北京农村商业银行",HSBC: "汇丰银行",SCB: "渣打银行",CITI: "花旗银行",HKBEA: "东亚银行",GHB: "广东华兴银行",SRCB: "深圳农村商业银行",GZRCU: "广州农村商业银行股份有限公司",DRCBCL: "东莞农村商业银行",BOD: "东莞市商业银行",GDRCC: "广东省农村信用社联合社",DSB: "大新银行",WHB: "永亨银行",DBS: "星展银行香港有限公司",EGBANK: "恒丰银行",TCCB: "天津市商业银行",CZBANK: "浙商银行",NCB: "南洋商业银行",XMBANK: "厦门银行",FJHXBC: "福建海峡银行",JLBANK: "吉林银行",HKB: "汉口银行",SJBANK: "盛京银行",DLB: "大连银行",BHB: "河北银行",URMQCCB: "乌鲁木齐市商业银行",SXCB: "绍兴银行",CDCB: "成都商业银行",FSCB: "抚顺银行",ZZBANK: "郑州银行",NXBANK: "宁夏银行",CQBANK: "重庆银行",HRBANK: "哈尔滨银行",LZYH: "兰州银行",QDCCB: "青岛银行",QHDCCB: "秦皇岛市商业银行",BOQH: "青海银行",TZCB: "台州银行",CSCB: "长沙银行",BOQZ: "泉州银行",BSB: "包商银行",DAQINGB: "龙江银行",SHRCB: "上海农商银行",ZJQL: "浙江泰隆商业银行",H3CB: "内蒙古银行",BGB: "广西北部湾银行",GLBANK: "桂林银行",DAQINGB: "龙江银行",CDRCB: "成都农村商业银行",FJNX: "福建省农村信用社联合社",TRCB: "天津农村商业银行",JSRCU: "江苏省农村信用社联合社",SLH: "湖南农村信用社联合社",JXNCX: "江西省农村信用社联合社",SCBBANK: "商丘市商业银行",HRXJB: "华融湘江银行",HSBK: "衡水市商业银行",CQNCSYCZ: "重庆南川石银村镇银行",HNRCC: "湖南省农村信用社联合社",XTB: "邢台银行",LPRDNCXYS: "临汾市尧都区农村信用合作联社",DYCCB: "东营银行",SRBANK: "上饶银行",DZBANK: "德州银行",CDB: "承德银行",YNRCC: "云南省农村信用社",LZCCB: "柳州银行",WHSYBANK: "威海市商业银行",HZBANK: "湖州银行",BANKWF: "潍坊银行",GZB: "赣州银行",RZGWYBANK: "日照银行",NCB: "南昌银行",GYCB: "贵阳银行",BOJZ: "锦州银行",QSBANK: "齐商银行",RBOZ: "珠海华润银行",HLDCCB: "葫芦岛市商业银行",HBC: "宜昌市商业银行",HZCB: "杭州商业银行",JSBANK: "苏州市商业银行",LYCB: "辽阳银行",LYB: "洛阳银行",JZCBANK: "焦作市商业银行",ZJCCB: "镇江市商业银行",FGXYBANK: "法国兴业银行",DYBANK: "大华银行",DIYEBANK: "企业银行",HQBANK: "华侨银行",HSB: "恒生银行",LSB: "临沂商业银行",YTCB: "烟台商业银行",QLB: "齐鲁银行",BCCC: "BC卡公司",CYB: "集友银行",TFB: "大丰银行",AEON: "AEON信贷财务亚洲有限公司",MABDA: "澳门BDA"}      

js银行卡luhm校验,验证银行卡号并返回开户行(三方插件和在线验证)相关推荐

  1. js 银行卡正则校验

    // pages/wapManageFinance/bankManage.js const {getProvinceList,getCityList,getCountyList,addMemberBa ...

  2. js银行卡、手机号等校验汇总

    前端JS银行卡等校验方法总结 会持续更新 银行卡输入添加空格和长度限制 /*** 银行卡格式化* 如何:6217 0044 0000 2047555*/formatBankNo:function (B ...

  3. 银行卡号验证js(银行卡号Luhm校验)

    //银行卡号校验 //Description: 银行卡号Luhm校验 //Luhm校验规则:16位银行卡号(19位通用): // 1.将未带校验位的 15(或18)位卡号从右依次编号 1 到 15(1 ...

  4. js验证银行卡号,并自动识别银行信息。js验证手机码。js验证数字

    1. 需求 工作要求,要对表单的一些内容进行校验,要求 验证是否输入的数字 验证手机号是否正确 验证银行卡号,并自动识别银行名称 2. 实现 2.1 验证数字 export function vali ...

  5. C#——获取银行卡所属银行,验证银行卡号是否正确

    原文Java大神写的 不是原创,本人转载:https://blog.csdn.net/qq_36279445/article/details/77369760 第一想到的是正则表达式,后面尝试多次,卡 ...

  6. js验证银行卡号属于哪家银行

    因为今天有个业务涉及到了银行卡业务,一开始打算让用户自己输入银行卡类型,或者是让用户手动选择银卡卡类型,但是都感觉有点捞,于是还是采用了调用接口: //接口链接 https://ccdcapi.ali ...

  7. element-UI框架使用validate.js的form校验规则(+自定义验证代码)- 应用篇

    文章目录 element-UI除了官方给出的校验规则,还可以自定义(举例如下) 代码示例: 参考文章: element-UI除了官方给出的校验规则,还可以自定义(举例如下) element-UI框架f ...

  8. Java使用luhn校验算法实现银行卡号合法性校验获取银行卡号所属银行

    Luhn校验算法或是Luhn 公式,也被称作"模10算法".它是一种简单的校验公式,一般会被用于身份证号码,IMEI号码,美国供应商识别号码, 或是加拿大的社会保险号码的验证.该算 ...

  9. 身份证号验证 银行卡号验证

    身份证号验证 /* 审批系统的身份证验证* 身份证15位编码规则:dddddd yymmdd xx p* dddddd:6位地区编码* yymmdd: 出生年(两位年)月日,如:910215* xx: ...

最新文章

  1. 自然语言处理(NLP)之使用LSTM进行文本情感分析
  2. 利用三层交换机实现VLAN间路由
  3. jquery插件Loadmask
  4. 机器学习(2)--感知机
  5. 警惕开源代码库中的安全隐患
  6. 覆盖7大手机品牌近4亿安卓用户 “互传联盟”让分享更容易
  7. 总结一些Android好用的开源库
  8. 【房价预测】基于matlab GM模型房价预测【含Matlab源码 346期】
  9. 抢椅子游戏java_抢椅子游戏作文(精选10篇)
  10. springboot 配置 P6spy
  11. 带注释的c51汇编语言,51单片机矩阵键盘控制程序 汇编语言 带详细注释
  12. 010 Editor 9.x.x——安装、注册和汉化
  13. 完美解决“word无法创建工作文件,请检查临时环境变量”
  14. Windows系统连接蓝牙音箱,已连接,没有声音
  15. rain、rainy、raining的区别
  16. SQL面试题 (一)
  17. 汇编原理自我总结(三)
  18. 一位明星证券客户经理的十年辛酸史--俊材有话说
  19. 企业电子文档安全管理
  20. 我的世界网易是java版吗,看完这篇彻底明白了

热门文章

  1. 2021-11-09 - Redis - GUI Tool - RDM - 学习/实践
  2. imu_tk源码分析
  3. 教育专题讲座(带答案)
  4. wordpress AVADA主题实现图片菜单导航的方法
  5. 李彦宏:外面的世界很大眼界决定命运
  6. 使用HE的IPv6隧道为腾讯云轻量应用服务器接入IPv6网络
  7. 给我讲解一下傅里叶变换与衍射的关系
  8. 评测3款高颜值的安卓azw3阅读器
  9. activiti complete流程
  10. mysql分隔符声明_MySQL中的分隔符