前端JS银行卡等校验方法总结
会持续更新
银行卡输入添加空格和长度限制
formatBankNo:function (BankNo){
if (BankNo.value == "") return;
var account = new String (BankNo.value);
account = account.substring(0,22);
if (account.match (".[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{7}") == null){
if (account.match (".[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{7}|" + ".[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{7}|" +
".[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{7}|" + ".[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{7}") == null){
var accountNumeric = accountChar = "", i;
for (i=0;i<account.length;i++){
accountChar = account.substr (i,1);
if (!isNaN (accountChar) && (accountChar != " ")) accountNumeric = accountNumeric + accountChar;
}
account = "";
for (i=0;i<accountNumeric.length;i++){
if (i == 4) account = account + " ";
if (i == 8) account = account + " ";
if (i == 12) account = account + " ";
account = account + accountNumeric.substr (i,1)
}
}
}
else
{
account = " " + account.substring (1,5) + " " + account.substring (6,10) + " " + account.substring (14,18) + "-" + account.substring(18,25);
}
if (account != BankNo.value) BankNo.value = account;
},
银行卡是否可用精度校验
CheckBankNo(t_bankno) {
t_bankno = String(t_bankno).replace(/\s*/g,"")
var bankno =$.trim(t_bankno);
if (bankno == "") {
return false;
}
if (bankno.length < 16 || bankno.length > 19) {
console.log("银行卡号长度必须在16到19之间")
return false;
}
var num = /^\d*$/;
if (!num.exec(bankno)) {
return false;
}
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(bankno.substring(0, 2))== -1) {
return false;
}
if(!this.luhnCheck(bankno))
return false;
return true;
},
luhnCheck(bankno) {
bankno = String(bankno).replace(/\s*/g,"")
var lastNum=bankno.substr(bankno.length-1,1);
var first15Num=bankno.substr(0,bankno.length-1);
var newArr=new Array();
for(var i=first15Num.length-1;i>-1;i--){
newArr.push(first15Num.substr(i,1));
}
var arrJiShu=new Array();
var arrJiShu2=new Array();
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();
var jishu_child2=new Array();
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;
var sumOuShu=0;
var sumJiShuChild1=0;
var sumJiShuChild2=0;
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);
var k= parseInt(sumTotal)%10==0?10:parseInt(sumTotal)%10;
var luhn= 10-k;
if(lastNum==luhn){
return true;
}else{
return false;
}
},
手机号校验
const validatemobile = (newname) => {
if (newname.length == 0) {
return false;
}
if (newname.length != 11) {
return false;
}
var PATTERN_CHINAMOBILE = /^1(3[4-9]|5[012789]|8[23478]|4[7]|7[8])\d{8}$/;
var PATTERN_CHINAUNICOM = /^1(3[0-2]|5[56]|8[56]|4[5]|7[6])\d{8}$/;
var PATTERN_CHINATELECOM = /^1(3[3])|(8[019])\d{8}$/;
if (PATTERN_CHINAUNICOM.test(newname)) {
return true;
} else if (PATTERN_CHINAMOBILE.test(newname)) {
return true;
} else if (PATTERN_CHINATELECOM.test(newname)) {
return true;
}else {
return false;
}
};
email校验
validateMail:function (mail){
if(mail!=""){
var strRegex = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
if(!strRegex.test(mail)){
return false;
}
}
return true;
},