百科狗-知识改变命运!
--

银行卡号正则表达式详解

乐乐1年前 (2023-11-21)阅读数 13#技术干货
文章标签卡号

一、银行卡号正则校验

银行卡号是我们日常生活中经常接触到的一个数字串,如何验证银行卡号的正确性呢?通过正则表达式来实现正则校验是最直接有效的方法之一。下面是一段实现银行卡号正则校验的JavaScript代码。

/**
 * 校验银行卡号
 * @param {string} cardNo 银行卡号
 * @returns {boolean} true为合法,false为不合法
 */
function validateCardNo(cardNo) {
  // 银行卡号正则表达式
  var reg = /^([1-9]{1})(\d{15}|\d{18})$/;
  return reg.test(cardNo);
}

该正则表达式中,^表示匹配字符串的开始,([1-9]{1})表示第一位必须是非零数字,(\d{15}|\d{18})表示后面可以是15位或者18位数字,$表示匹配字符串的结束。如果传入的银行卡号符合该正则表达式,则会返回true,否则返回false。

二、银行卡卡号正确格式

虽然银行卡号的长度可以是15位或18位,但是不同银行的银行卡号格式可能会有所不同。下面列举几家银行的银行卡号格式。

中国工商银行(ICBC)的银行卡号格式为:6222XXXXXXXXXXXXXX或6282XXXXXXXXXXXXXXX。

中国农业银行(ABC)的银行卡号格式为:6228XXXXXXXXXXXXXX。

中国银行(BOC)的银行卡号格式为:6227XXXXXXXXXXXX或9558XXXXXXXXXXXXXXX。

建设银行(CCB)的银行卡号格式为:6227XXXXXXXXXXXX或6217XXXXXXXXXXXX。

三、银行卡号正则表达式

银行卡号的正则表达式不是唯一的,我们还可以根据需要自定义正则表达式。下面是一个常用的银行卡号正则表达式。

// 银行卡号正则表达式
/^([1-9]{1})(\d{14}|\d{18})$/

该正则表达式与前面提到的正则表达式的区别在于([\d]{14}|[\d]{18})变成了(\d{14}|\d{18}),把中括号变成了小括号。

四、银行卡号正则验证

验证银行卡号是否符合正则表达式的方法有很多,可以使用JavaScript中的正则表达式对象的test方法,也可以使用字符串的match方法。下面是使用match方法的示例代码。

/**
 * 验证银行卡号是否符合正则表达式
 * @param {string} cardNo 银行卡号
 * @returns {boolean} true为符合,false为不符合
 */
function matchCardNo(cardNo) {
  // 银行卡号正则表达式
  var reg = /^([1-9]{1})(\d{14}|\d{18})$/;
  return cardNo.match(reg) !== null;
}

五、银行卡号正则匹配

如果需要从一段文本中提取出符合正则表达式的银行卡号,可以使用正则表达式的exec方法。下面是一个从文本中提取银行卡号的示例代码。

/**
 * 从文本中提取银行卡号
 * @param {string} text 文本
 * @returns {Array} 匹配到的银行卡号数组
 */
function extractCardNo(text) {
  // 银行卡号正则表达式
  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;
}

六、银行卡号正常是多少位

银行卡号的长度可以是15位或18位,如果卡号长度不足,会补齐至15位或18位。不同银行的卡号长度可能不同,可以通过对照前面提到的银行卡号格式得知,但是一般情况下银行卡号长度都是16位。

七、银行卡号正则表达式验证

为了方便用户输入,我们可以在输入框中实时验证用户输入的银行卡号是否符合正则表达式。下面是一个实现银行卡号正则表达式验证的示例代码。

/**
 * 银行卡号正则表达式验证
 * @param {string} cardNo 银行卡号
 * @param {function} callback 回调函数,验证结果通过参数true/false返回
 */
function validateCardNoByReg(cardNo, callback) {
  // 银行卡号正则表达式
  var reg = /^([1-9]{1})(\d{14}|\d{18})$/;
  callback(reg.test(cardNo));
}

八、银行卡号规则

中国银行卡行业标准规定,银行卡号是由发卡行、归属地区、分行代码、个人账户四部分组成,具体规律如下:

银行卡号第1~6位为发卡行标识代码,中国人民银行分配发行。中国工商银行的发卡行标识代码为:ICBC(6222、6282开头的卡号)。

银行卡号正则表达式详解

银行卡号第7~9位为归属地区标识代码,具体对应关系如下:

银行卡号前6位 归属地区标识代码 城市/省份
6222 10 北京市
6282 10 北京市
6231 11 天津市
6202 13 上海市
6221 18 河北省
6223 18 河北省

银行卡号第10~12位为分行标识代码,由银行自行分配,且一般只有直辖市和省会城市的银行分行代码比较多,其余城市银行分行代码较少。银行卡号第13~19位为个人账户标识代码。个人账户标识代码一般由发卡行自行决定,所以不同的银行卡号个人账户标识代码也可能不同。

九、正则匹配银行卡号

正则匹配银行卡号是非常常见的需求,可以使用JavaScript的正则表达式对象的exec方法来实现。下面是一个正则匹配银行卡号的示例代码。

/**
 * 正则匹配银行卡号
 * @param {string} text 文本
 * @returns {Array} 匹配到的银行卡号数组
 */
function matchCardNo(text) {
  // 银行卡号正则表达式
  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;
}

十、正则表达式匹配银行卡号

和正则匹配银行卡号类似,也可以使用正则表达式来匹配银行卡号。下面是一个正则表达式匹配银行卡号的示例代码。

var text = '我的银行卡号是622202xxxxxxxxxxxxx,你的银行卡号是62222222222222222。';
// 银行卡号正则表达式
var reg = new RegExp('\d{16,19}', 'g');
var cardNoArr = text.match(reg);
console.log(cardNoArr); // ["622202xxxxxxxxxxxxx", "62222222222222222"]

该示例代码使用正则表达式的RegExp函数来构造一个表达式对象,这里正则表达式的意思是匹配16位到19位的数字串(\d表示数字字符,{16,19}表示出现次数在16和19之间)。然后使用字符串的match方法来匹配文本中的银行卡号。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)