千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 銀行卡號(hào)正則表達(dá)式詳解

銀行卡號(hào)正則表達(dá)式詳解

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-21 16:04:18 1700553858

一、銀行卡號(hào)正則校驗(yàn)

銀行卡號(hào)是我們?nèi)粘I钪薪?jīng)常接觸到的一個(gè)數(shù)字串,如何驗(yàn)證銀行卡號(hào)的正確性呢?通過正則表達(dá)式來實(shí)現(xiàn)正則校驗(yàn)是最直接有效的方法之一。下面是一段實(shí)現(xiàn)銀行卡號(hào)正則校驗(yàn)的JavaScript代碼。

/**
 * 校驗(yàn)銀行卡號(hào)
 * @param {string} cardNo 銀行卡號(hào)
 * @returns {boolean} true為合法,false為不合法
 */
function validateCardNo(cardNo) {
  // 銀行卡號(hào)正則表達(dá)式
  var reg = /^([1-9]{1})(\d{15}|\d{18})$/;
  return reg.test(cardNo);
}

該正則表達(dá)式中,^表示匹配字符串的開始,([1-9]{1})表示第一位必須是非零數(shù)字,(\d{15}|\d{18})表示后面可以是15位或者18位數(shù)字,$表示匹配字符串的結(jié)束。如果傳入的銀行卡號(hào)符合該正則表達(dá)式,則會(huì)返回true,否則返回false。

二、銀行卡卡號(hào)正確格式

雖然銀行卡號(hào)的長(zhǎng)度可以是15位或18位,但是不同銀行的銀行卡號(hào)格式可能會(huì)有所不同。下面列舉幾家銀行的銀行卡號(hào)格式。

中國(guó)工商銀行(ICBC)的銀行卡號(hào)格式為:6222XXXXXXXXXXXXXX或6282XXXXXXXXXXXXXXX。

中國(guó)農(nóng)業(yè)銀行(ABC)的銀行卡號(hào)格式為:6228XXXXXXXXXXXXXX。

中國(guó)銀行(BOC)的銀行卡號(hào)格式為:6227XXXXXXXXXXXX或9558XXXXXXXXXXXXXXX。

建設(shè)銀行(CCB)的銀行卡號(hào)格式為:6227XXXXXXXXXXXX或6217XXXXXXXXXXXX。

三、銀行卡號(hào)正則表達(dá)式

銀行卡號(hào)的正則表達(dá)式不是唯一的,我們還可以根據(jù)需要自定義正則表達(dá)式。下面是一個(gè)常用的銀行卡號(hào)正則表達(dá)式。

// 銀行卡號(hào)正則表達(dá)式
/^([1-9]{1})(\d{14}|\d{18})$/

該正則表達(dá)式與前面提到的正則表達(dá)式的區(qū)別在于([\d]{14}|[\d]{18})變成了(\d{14}|\d{18}),把中括號(hào)變成了小括號(hào)。

四、銀行卡號(hào)正則驗(yàn)證

驗(yàn)證銀行卡號(hào)是否符合正則表達(dá)式的方法有很多,可以使用JavaScript中的正則表達(dá)式對(duì)象的test方法,也可以使用字符串的match方法。下面是使用match方法的示例代碼。

/**
 * 驗(yàn)證銀行卡號(hào)是否符合正則表達(dá)式
 * @param {string} cardNo 銀行卡號(hào)
 * @returns {boolean} true為符合,false為不符合
 */
function matchCardNo(cardNo) {
  // 銀行卡號(hào)正則表達(dá)式
  var reg = /^([1-9]{1})(\d{14}|\d{18})$/;
  return cardNo.match(reg) !== null;
}

五、銀行卡號(hào)正則匹配

如果需要從一段文本中提取出符合正則表達(dá)式的銀行卡號(hào),可以使用正則表達(dá)式的exec方法。下面是一個(gè)從文本中提取銀行卡號(hào)的示例代碼。

/**
 * 從文本中提取銀行卡號(hào)
 * @param {string} text 文本
 * @returns {Array} 匹配到的銀行卡號(hào)數(shù)組
 */
function extractCardNo(text) {
  // 銀行卡號(hào)正則表達(dá)式
  var reg = /([1-9])(\d{14}|\d{17})/g;
  var result = [];
  var temp = null;
  while((temp = reg.exec(text)) !== null) {
    result.push(temp[0]);
  }
  return result;
}

六、銀行卡號(hào)正常是多少位

銀行卡號(hào)的長(zhǎng)度可以是15位或18位,如果卡號(hào)長(zhǎng)度不足,會(huì)補(bǔ)齊至15位或18位。不同銀行的卡號(hào)長(zhǎng)度可能不同,可以通過對(duì)照前面提到的銀行卡號(hào)格式得知,但是一般情況下銀行卡號(hào)長(zhǎng)度都是16位。

七、銀行卡號(hào)正則表達(dá)式驗(yàn)證

為了方便用戶輸入,我們可以在輸入框中實(shí)時(shí)驗(yàn)證用戶輸入的銀行卡號(hào)是否符合正則表達(dá)式。下面是一個(gè)實(shí)現(xiàn)銀行卡號(hào)正則表達(dá)式驗(yàn)證的示例代碼。

/**
 * 銀行卡號(hào)正則表達(dá)式驗(yàn)證
 * @param {string} cardNo 銀行卡號(hào)
 * @param {function} callback 回調(diào)函數(shù),驗(yàn)證結(jié)果通過參數(shù)true/false返回
 */
function validateCardNoByReg(cardNo, callback) {
  // 銀行卡號(hào)正則表達(dá)式
  var reg = /^([1-9]{1})(\d{14}|\d{18})$/;
  callback(reg.test(cardNo));
}

八、銀行卡號(hào)規(guī)則

中國(guó)銀行卡行業(yè)標(biāo)準(zhǔn)規(guī)定,銀行卡號(hào)是由發(fā)卡行、歸屬地區(qū)、分行代碼、個(gè)人賬戶四部分組成,具體規(guī)律如下:

銀行卡號(hào)第1~6位為發(fā)卡行標(biāo)識(shí)代碼,中國(guó)人民銀行分配發(fā)行。中國(guó)工商銀行的發(fā)卡行標(biāo)識(shí)代碼為:ICBC(6222、6282開頭的卡號(hào))。

銀行卡號(hào)第7~9位為歸屬地區(qū)標(biāo)識(shí)代碼,具體對(duì)應(yīng)關(guān)系如下:

銀行卡號(hào)前6位 歸屬地區(qū)標(biāo)識(shí)代碼 城市/省份
6222 10 北京市
6282 10 北京市
6231 11 天津市
6202 13 上海市
6221 18 河北省
6223 18 河北省

銀行卡號(hào)第10~12位為分行標(biāo)識(shí)代碼,由銀行自行分配,且一般只有直轄市和省會(huì)城市的銀行分行代碼比較多,其余城市銀行分行代碼較少。銀行卡號(hào)第13~19位為個(gè)人賬戶標(biāo)識(shí)代碼。個(gè)人賬戶標(biāo)識(shí)代碼一般由發(fā)卡行自行決定,所以不同的銀行卡號(hào)個(gè)人賬戶標(biāo)識(shí)代碼也可能不同。

九、正則匹配銀行卡號(hào)

正則匹配銀行卡號(hào)是非常常見的需求,可以使用JavaScript的正則表達(dá)式對(duì)象的exec方法來實(shí)現(xiàn)。下面是一個(gè)正則匹配銀行卡號(hào)的示例代碼。

/**
 * 正則匹配銀行卡號(hào)
 * @param {string} text 文本
 * @returns {Array} 匹配到的銀行卡號(hào)數(shù)組
 */
function matchCardNo(text) {
  // 銀行卡號(hào)正則表達(dá)式
  var reg = /^([1-9]{1})(\d{14}|\d{18})$/g;
  var result = [];
  var temp = null;
  while((temp = reg.exec(text)) !== null) {
    result.push(temp[0]);
  }
  return result;
}

十、正則表達(dá)式匹配銀行卡號(hào)

和正則匹配銀行卡號(hào)類似,也可以使用正則表達(dá)式來匹配銀行卡號(hào)。下面是一個(gè)正則表達(dá)式匹配銀行卡號(hào)的示例代碼。

var text = '我的銀行卡號(hào)是622202xxxxxxxxxxxxx,你的銀行卡號(hào)是62222222222222222。';
// 銀行卡號(hào)正則表達(dá)式
var reg = new RegExp('\d{16,19}', 'g');
var cardNoArr = text.match(reg);
console.log(cardNoArr); // ["622202xxxxxxxxxxxxx", "62222222222222222"]

該示例代碼使用正則表達(dá)式的RegExp函數(shù)來構(gòu)造一個(gè)表達(dá)式對(duì)象,這里正則表達(dá)式的意思是匹配16位到19位的數(shù)字串(\d表示數(shù)字字符,{16,19}表示出現(xiàn)次數(shù)在16和19之間)。然后使用字符串的match方法來匹配文本中的銀行卡號(hào)。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
inputref用法介紹

針對(duì)inputref這個(gè)輸入框引用對(duì)象,本文將從以下幾個(gè)方面進(jìn)行詳細(xì)的闡述,包括:常見用法、特殊用法、如何實(shí)現(xiàn)等內(nèi)容。一、常見用法inputref是一...詳情>>

2023-11-21 18:57:06
詳解192.168.81

一、192.168.81的登陸入口192.168.81是一個(gè)常見的路由器IP地址,它提供了多種登錄入口。其中,192.168.81.1是最常用的入口地址之一。在默認(rèn)情況...詳情>>

2023-11-21 18:46:18
set+e在編程中的應(yīng)用

一、什么是set+eSet+e是一種在編程中廣泛應(yīng)用的數(shù)據(jù)結(jié)構(gòu),也被稱為集合。簡(jiǎn)單來說,集合就是一組互不相同的元素。在編程中,Set+e通常用于存儲(chǔ)...詳情>>

2023-11-21 17:27:06
實(shí)卡接碼短信平臺(tái)及其應(yīng)用

一、平臺(tái)介紹實(shí)卡接碼短信平臺(tái)是一種可以自動(dòng)處理短信驗(yàn)證碼的平臺(tái)。該平臺(tái)主要由短信接口、卡池管理、卡池調(diào)度、號(hào)碼顯匿、號(hào)碼推送等模塊組成...詳情>>

2023-11-21 16:43:54
Nginx日志格式詳解

一、Nginx日志格式Nginx是一款高性能的HTTP和反向代理服務(wù)器,它采用默認(rèn)的日志格式記錄所有請(qǐng)求和響應(yīng)。Nginx日志格式由以下幾個(gè)部分組成:log...詳情>>

2023-11-21 16:15:06