1. 程式人生 > >前端JS校驗銀行卡卡號和身份證號碼(附ES6版方法)

前端JS校驗銀行卡卡號和身份證號碼(附ES6版方法)

var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加權因子 var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]; // 身份證驗證位值.10代表X function IdCardValidate(idCard) { idCard = trim(idCard.replace(/ /g, "")); //去掉字串頭尾空格 if (idCard.length == 15) { return isValidityBrithBy15IdCard(idCard); //進行15位身份證的驗證 } else if (idCard.length == 18) { var a_idCard = idCard.split(""); // 得到身份證陣列 if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){ //進行18位身份證的基本驗證和第18位的驗證 return true; }else { return false; } } else { return false; } }
/** * 判斷身份證號碼為18位時最後的驗證位是否正確 * @param a_idCard 身份證號碼陣列 * @return */ function isTrueValidateCodeBy18IdCard(a_idCard) { var sum = 0; // 宣告加權求和變數 if (a_idCard[17].toLowerCase() == 'x') { a_idCard[17] = 10; // 將最後位為x的驗證碼替換為10方便後續操作 } for ( var i = 0; i < 17; i++) { sum += Wi[i] * a_idCard[i]; // 加權求和 } valCodePosition = sum % 11; // 得到驗證碼所位置 if (a_idCard[17] == ValideCode[valCodePosition]) { return true; } else { return false; } } /** * 驗證18位數身份證號碼中的生日是否是有效生日 * @param idCard 18位書身份證字串 * @return */ function isValidityBrithBy18IdCard(idCard18){ var year = idCard18.substring(6,10); var month = idCard18.substring(10,12); var day = idCard18.substring(12,14); var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); // 這裡用getFullYear()獲取年份,避免千年蟲問題 if(temp_date.getFullYear()!=parseFloat(year) ||temp_date.getMonth()!=parseFloat(month)-1 ||temp_date.getDate()!=parseFloat(day)){ return false; }else{ return true; } } /** * 驗證15位數身份證號碼中的生日是否是有效生日 * @param idCard15 15位書身份證字串 * @return */ function isValidityBrithBy15IdCard(idCard15){ var year = idCard15.substring(6,8); var month = idCard15.substring(8,10); var day = idCard15.substring(10,12); var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); // 對於老身份證中的你年齡則不需考慮千年蟲問題而使用getYear()方法 if(temp_date.getYear()!=parseFloat(year) ||temp_date.getMonth()!=parseFloat(month)-1 ||temp_date.getDate()!=parseFloat(day)){ return false; }else{ return true; } } //去掉字串頭尾空格 function trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } ES6版校驗方法
1、銀行卡校驗 export function bankCardValidate(bankno) { const lastNum = +bankno.substr(bankno.length - 1, 1); const first15Num = bankno.substr(0, bankno.length - 1); const newArr = []; for (let i = first15Num.length - 1; i > -1; i -= 1) { newArr.push(first15Num.substr(i, 1)); } const arrJiShu = []; const arrJiShu2 = []; const arrOuShu = []; for (let j = 0; j < newArr.length; j += 1) { if ((j + 1) % 2 === 1) { if (parseInt(newArr[j], 10) * 2 < 9) { arrJiShu.push(parseInt(newArr[j], 10) * 2); } else { arrJiShu2.push(parseInt(newArr[j], 10) * 2); } } else { arrOuShu.push(newArr[j]); } }
const jishuChild1 = []; const jishuChild2 = []; for (let h = 0; h < arrJiShu2.length; h += 1) { jishuChild1.push(parseInt(arrJiShu2[h], 10) % 10); jishuChild2.push(parseInt(arrJiShu2[h], 10) / 10); }
let sumJiShu = 0; let sumOuShu = 0; let sumJiShuChild1 = 0; let sumJiShuChild2 = 0; let sumTotal = 0; for (let m = 0; m < arrJiShu.length; m += 1) { sumJiShu += parseInt(arrJiShu[m], 10); }
for (let n = 0; n < arrOuShu.length; n += 1) { sumOuShu += parseInt(arrOuShu[n], 10); }
for (let p = 0; p < jishuChild1.length; p += 1) { sumJiShuChild1 += parseInt(jishuChild1[p], 10); sumJiShuChild2 += parseInt(jishuChild2[p], 10); } sumTotal = parseInt(sumJiShu, 10) + parseInt(sumOuShu, 10) + parseInt(sumJiShuChild1, 10) + parseInt(sumJiShuChild2, 10); const k = parseInt(sumTotal, 10) % 10 === 0 ? 10 : parseInt(sumTotal, 10) % 10; const luhn = 10 - k; if (lastNum === luhn) { return true; } else { return false; } } 2、身份證號校驗 export function IdCardValidate(idCard) { const idCards = trim(idCard.replace(/ /g, '')); if (idCard.length === 15) { return isValidityBrithBy15IdCard(idCards); } else if (idCards.length === 18) { const idCardS = idCards.split(''); // 得到身份證陣列 if (isValidityBrithBy18IdCard(idCards) && isTrueValidateCodeBy18IdCard(idCardS)) { return true; } else { return false; } } else { return false; }
function isTrueValidateCodeBy18IdCard(aIdCard) { const Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; const ValideCode = ['1', '0', '10', '9', '8', '7', '6', '5', '4', '3', '2']; let sum = 0; const AidCard = aIdCard; if (AidCard[17].toLowerCase() === 'x') { AidCard[17] = '10'; } for (let i = 0; i < 17; i += 1) { sum += Wi[i] * AidCard[i]; } const valCodePosition = sum % 11; if (AidCard[17] === ValideCode[valCodePosition]) { return true; } else { return false; } }
function isValidityBrithBy18IdCard(idCard18) { const year = idCard18.substring(6, 10); const month = idCard18.substring(10, 12); const day = idCard18.substring(12, 14); const tempDate = new Date(year, parseFloat(month) - 1, parseFloat(day)); // 這裡用getFullYear()獲取年份,避免千年蟲問題 if (tempDate.getFullYear() !== parseFloat(year) || tempDate.getMonth() !== parseFloat(month) - 1 || tempDate.getDate() !== parseFloat(day)) { return false; } else { return true; } }
function isValidityBrithBy15IdCard(idCard15) { const year = idCard15.substring(6, 8); const month = idCard15.substring(8, 10); const day = idCard15.substring(10, 12); const tempDate = new Date(year, parseFloat(month) - 1, parseFloat(day)); if (tempDate.getYear() !== parseFloat(year) || tempDate.getMonth() !== parseFloat(month) - 1 || tempDate.getDate() !== parseFloat(day)) { return false; } else { return true; } } function trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ''); } }

相關推薦

前端JS銀行卡身份證號碼ES6方法

var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加權因子 var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]; // 身份證驗證位值.10代表X funct

JS銀行卡、輸入時放大效果

比較 left for 取出 abs focusout htm length rep 一、(校驗格式) function CheckBankNo(t_bankno) {   var bankno = $.trim(t_bankno);   if(bankno == ""

銀行卡是否正確判斷實戰

public class CheckIdCard { /** * 校驗銀行卡卡號 * * @param cardId * @return */ public static b

js中的typeofinstanceof的用法區別型別判斷方法

typeof 作用:用於判斷一個一個表示式,(物件或者原始值),返回一個字串。 返回的可能的值(摘自mdn) 型別 結果 Undefined "undefined" Null "object" (歷史遺留問題) Boolean "boolean" Number "num

Android 音視頻深入 十三 OpenSL ES 制作音樂播放器,能暫停調整音量源碼下載

音視頻 OpenSL ES 項目地址https://github.com/979451341/OpenSLAudio OpenSL ES 是基於NDK也就是c語言的底層開發音頻的公開API,通過使用它能夠做到標準化, 高性能,低響應時間的音頻功能實現方法。 這次是使用OpenSL ES來做一個音樂播

【Mac + Python + Selenium】之PyCharm配置Selenium自動化 【轉載】【Pycharm編輯器破解步驟】之ideaPycharm 等系列產品啟用啟用方法啟用碼:Mac系統 Python pip 命令不識別

一、安裝PyCharm 1、下載地址: Pycharm編輯器官網下載地址 2、安裝完成之後開啟,一路下去點選,直到填寫註冊碼,參考: 《【轉載】【Pycharm編輯器破解步驟】之idea和Pycharm 等系列產品啟用啟用方法和啟用碼(附:Mac系統)》   二、配置Python環境並安

資料結構演算法分析之排序篇--歸併排序Merge Sort常用排序演算法時間複雜度比較贈記憶方法

歸併排序的基本思想 歸併排序法是將兩個或以上的有序表合併成一個新的有序表,即把待排序序列分成若干個子序列,每個子序列是有序的。然後再把有序子序列合併為整體有序序列。注意:一定要是有序序列! 歸併排序例項: 合併方法: 設r[i……n]由兩個有序子表r

openlayers4 入門開發系列之前端動態渲染克裏金插值 kriging 篇源碼下載

db2 block i++ 參數 source 文件 str value 地圖 前言 openlayers4 官網的 api 文檔介紹地址 openlayers4 api,裏面詳細的介紹 openlayers4 各個類的介紹,還有就是在線例子:openlayers4

java實現銀行卡 Luhm 演算法

效驗是否為銀行卡,用於驗證 現行 16 位銀聯卡現行卡號開頭 6 位是 622126~622925 之間的,7 到 15 位是銀行自定義的,可能是髮卡分行,髮卡網點,髮卡序號,第 16 位是校驗碼。16 位卡號校驗位採用 Luhm 校驗方法計算:1,將未帶校驗位的 1

Java之——基於Luhn演算法的銀行卡的格式

一、檢驗規則 Luhn演算法被用於最後一位為校驗碼的一串數字的校驗,通過如下規則計算校驗碼的正確性:     按照從右往左的順序,從這串數字的右邊開始,包含校驗碼,將偶數位數字乘以2,如果每次乘二操作的結果大於9(如 8 × 2 = 16),然後計算個位和十位數字的和(如

銀行卡識別:C#版本iOS版本

及其 emgucv ria topic ext 網址 整體 link 比較 (一)圖像采集 首先我們要取得待識別的圖像。這項工作可以通過數碼相機、DV機、工業攝像機、電腦數字攝像頭、手機攝像頭等設備采集,並從中取得我們要分析的圖像信息。 (二)版面分析

input只輸入數字js是否輸入框只有數字以及游標放輸入框時,輸入框裡內容消失

input只輸入數字和js校驗是否輸入框只有數字以及游標放輸入框時,輸入框裡內容消失 input框只能輸入數字: 1 onkeyup="value=value.replace(/[^\d]/g,'')" js校驗是否是純數字 1 if(isNaN(bankAccountNo)){ 2

MyEclipse提供比較嚴謹的js功能,因此ExtJs、jQuery等前端框架匯入到MyEclipse後均會提示錯誤,解決辦法

方法一: 1、在MyEclipse選擇選單欄window 2、選擇preferences 3、左側選單樹中展開myeclipse 4、選擇下面的validation 5、將右側表格中javascript validator for Js files 把Buli

js 身份證

根據地區編碼、身份證格式、18位身份證需要驗證最後一位校驗位   //校驗身份證 function IdentityCodeValid(code) { var city = { 11: "北京", 12: "天津",

前端資料jquery.validte.js

1. 預設validate引數的初始化:    這個外掛如果要用,肯定很多頁面都會用到,畢竟如果有表單,就需要驗證。而且這個外掛的預設語言是英語,所以我們要轉換成漢語。我們當然不希望在每個頁面的js都寫一遍message。所以我們可以在公用的js裡面對預設message

JS開始時間結束時間

<html> <head> <script> function checkTime(){ var startTime = document

JS身份證號碼(15位18位)

//檢查生日是否正確 checkBirthday = function(card) { var len = card.length; //身份證15位時,次序為省(3位)市(3位)年(2位)月(2位)日(2位)校驗位(3位),皆為數字 if(len == '15') { var re_fifteen = /^

類Shiro權限框架的設計實現(2)--對復雜權限表達式的支持

treemap evel 註冊 st3 builder row blog array www. 前言:   我看了下shiro好像默認不支持復雜表達式的權限校驗, 它需要開發者自己去做些功能擴展的工作. 針對這個問題, 同時也會為了彌補上一篇文章提到的支持復雜表示需求,

java身份證合法性並獲取並根據身份證提取身份證相關資訊

原文地址:https://blog.csdn.net/ycb1689/article/details/52352147   /** * 身份證前6位【ABCDEF】為行政區劃數字程式碼(簡稱數字碼)說明(參考《GB/T 2260-2007 中華人民共和國行政區劃程式碼》): *

js引數是否為空以及url格式

/**   * 校驗欄位是否為URL  * message為提示語關鍵字  */ function isURL(param,message,allowNull) {// 驗證url     var strRegex = "^((h