版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37682202/article/details/82116571
最近做公司的项目遇到银行卡号匹配开户银行的问题,一开始是正则匹配银行卡号码,开户银行银行自己填写,后来用户又让改,说要自动匹配开户银行,唉,用户都是大哥,让改就要改……话不多说,上代码。
自己寻思了半天,上网看了一些大神的思路,最后做出来,开户银行系统匹配,银行卡号码使用正则来验证。
其中要引用两个js文件,链接地址如下:https://pan.baidu.com/s/1M4OW7Yi7JaIMA6GYr4Jv6g
如果链接失效请Q我:193548305
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)打印如下: