銀行卡號
//驗證銀行卡號,bankno為銀行卡號
function luhnCheck(){
var bankno = $.trim($("#bankNoInp").val());
var lastNum=bankno.substr(bankno.length-1,1);//取出最后一位(與luhn進行比較)
var first15Num=bankno.substr(0,bankno.length-1);//前15或18位
var newArr=new Array();
for(var i=first15Num.length-1;i>-1;i--){ //前15或18位倒序存進數組
newArr.push(first15Num.substr(i,1));
}
var arrJiShu=new Array(); //奇數位*2的積 <9
var arrJiShu2=new Array(); //奇數位*2的積 >9
var arrOuShu=new Array(); //偶數位數組
for(var j=0;j<newArr.length;j++){
if((j+1)%2==1){//奇數位
if(parseInt(newArr[j])*2<9)
arrJiShu.push(parseInt(newArr[j])*2);
else
arrJiShu2.push(parseInt(newArr[j])*2);
}
else //偶數位
arrOuShu.push(newArr[j]);
}
var jishu_child1=new Array();//奇數位*2 >9 的分割之后的數組個位數
var jishu_child2=new Array();//奇數位*2 >9 的分割之后的數組十位數
for(var h=0;h<arrJiShu2.length;h++){
jishu_child1.push(parseInt(arrJiShu2[h])%10);
jishu_child2.push(parseInt(arrJiShu2[h])/10);
}
var sumJiShu=0; //奇數位*2 < 9 的數組之和
var sumOuShu=0; //偶數位數組之和
var sumJiShuChild1=0; //奇數位*2 >9 的分割之后的數組個位數之和
var sumJiShuChild2=0; //奇數位*2 >9 的分割之后的數組十位數之和
var sumTotal=0;
for(var m=0;m<arrJiShu.length;m++){
sumJiShu=sumJiShu+parseInt(arrJiShu[m]);
}
for(var n=0;n<arrOuShu.length;n++){
sumOuShu=sumOuShu+parseInt(arrOuShu[n]);
}
for(var p=0;p<jishu_child1.length;p++){
sumJiShuChild1=sumJiShuChild1+parseInt(jishu_child1[p]);
sumJiShuChild2=sumJiShuChild2+parseInt(jishu_child2[p]);
}
//計算總和
sumTotal=parseInt(sumJiShu)+parseInt(sumOuShu)+parseInt(sumJiShuChild1)+parseInt(sumJiShuChild2);
//計算luhn值
var k= parseInt(sumTotal)%10==0?10:parseInt(sumTotal)%10;
var luhn= 10-k;
if(lastNum==luhn){
console.log("驗證通過");
return true;
}else{
alert("銀行卡號必須符合luhn校驗");
return false;
}
}
銀行卡號位數限制
regs = /^(\d{16}|\d{19})$/;
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";
校驗銀行卡號案例
//新增銀行卡
function addBank(){
var bankNo = $.trim($("#bankNoInp").val());
var bankName = $.trim($("#bankNameInp").val());
var bankAttr = $.trim($("#bankAttrInp").val());
reg = /^[\u4E00-\u9FA5]{2,10}$/;
regs = /^(\d{16}|\d{19})$/;
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(bankNo.length <= 0 ){
alert("銀行卡號不能為空!");
}else{
// 銀行卡號不為空時,判斷銀行卡號是否正確
if( !regs.test(bankNo) || strBin.indexOf(bankNo.substring(0, 2)) == -1 || !luhnCheck(bankNo) ){
alert("銀行卡號輸入錯誤!");
}else{
// 銀行卡號輸入正確時,判斷開戶名,開戶銀行是否為空
if(bankName == "" || bankAttr == ""){
alert("開戶名與開戶銀行不能為空!");
}else{
// 開戶行不為空時,判斷開戶行是否合法
if(!reg.test(bankName) || !reg.test(bankAttr)){
alert("請輸入合法開戶名與開戶銀行!");
}else{
var str = "1";
}
}
}
if(str == "1" ){
$.ajax({
type:'post',
url:'../BankController/insertBank.action',
dataType:'Json',//服務器返回的數據類型 可選XML ,Json jsonp script html text等
data:{
"bankNo": bankNo,
"bankName": bankName,
"bankAttribute": bankAttr
},
success:function(msg){
if(msg.success){
alert("添加帳號成功!");
getData();
hideDialog();
}else{
alert(msg.error);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
sessionTimeout(XMLHttpRequest, textStatus, errorThrown);
}
})
}
}
}
只允許輸入漢字以及漢字輸入位數
//2-10位
reg = /^[\u4E00-\u9FA5]{2,10}$/;