前言: 技术栈主要基于react + ant-design

  描述: 填写信用卡卡号时,会自动四位空格,并格式校验判断卡种  ,这里我们业务只涉及到四种卡。

代码解析

// ant 组件自引,这里我只讲解下具体的

changeCardNumber= (e)=>{
  e.target.value = value.replace(/\D/g, '').replace(/(\s)/g, '').replace(/(\d{4})/g, '$1 ').replace(/\s*$/, '') // 这里主要是判断位数自动空格
  // 这里我们获取到表单的卡号是带空格的,而作为参数传给后端是不能带空格的,所以这里需要清除空格
  let value = e.target.value.replace(/\s/g,"")
}
 
<Form.Item>
{getFieldDecorator('cardNumer', {
rules: [
{
  required: true,
},
{
validator: (rule, value, callback) => {
  if (!checkCreditCard(value.replace(/\s/g, ""))) {
    callback('Please enter a valid Credit Card Number.')
  }
  callback()
  }
}
],
})(<Input onChange={changeCardNumber} />)}
</Form.Item>
 
//这是接上面 封装判断卡种方法
const masterCardReg = '^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$';
const DiscoverReg = '^65[4-9][0-9]{13}|64[4-9][0-9]{13}|6011[0-9]{12}|(622(?:12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|9[01][0-9]|92[0-5])[0-9]{10})$';
const MaestroReg = '^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$';
const VisaReg = '^4[0-9]{12}(?:[0-9]{3})?$';
 
export function checkCreditCard(card) {
  if (new RegExp(masterCardReg).test(card)) {
    return true;
  } else if (new RegExp(DiscoverReg).test(card)) {
    return true;
  } else if (new RegExp(MaestroReg).test(card)) {
    return true;
  } else if (new RegExp(VisaReg).test(card)) {  
    return true;
  }
  return false;
}

参考链接:https://blog.csdn.net/MercedesCc/article/details/83105049

https://blog.csdn.net/john_jian_yo/article/details/78330449

https://blog.csdn.net/awai320/article/details/47101469

ant design验证input框只能输入数字

https://blog.csdn.net/zr15829039341/article/details/82745239

react 信用卡格式检验的更多相关文章

  1. Web APi入门之移除XML格式(一)

    前言 回头想来,没想到自己却坚持下来了,EntityFramework系列终于全部完成了,给自己点个赞先.本系列将着手于Web API,关于一些基础的介绍及定义就不再叙述,请参考园友们文章,非常详细, ...

  2. 单行 JS 实现移动端金钱格式的输入规则

    金钱格式检验属于很普通的需求,记得工作中第一次遇到这个需求的时候,还不太会写正则表达式,搜到了一个类似的解决方案,看着正则的文档改成了自己需要的形式. 但是用户的输入操作是任意的,只是显示提示信息,这 ...

  3. IIS时间格式设置

    IIS时间格式调整: (已解决)今天在用IIS7的时候发现一个关于时间格式的问题,当我在ASP中使用now()时间函数的时候,日期是以“/”来分隔,而不是以“-”来分隔的,使得我在运行程序的时候老出错 ...

  4. 2018年度 35 个最好用 Vue 开源库

    在本文中,我们将推荐一些非常好用的 Vue 相关的开源项目.无论是开发新手还是经验丰富的老手,我们都喜欢开源软件包.对于开发者来说,如果没有这些开源软件包,很难想象我们的生活会变得多么疲惫不堪,而且靠 ...

  5. 35 个最好用的 Vue 开源库

    35 个最好用的 Vue 开源库 Vue.js 是一个非常易用的渐进式 JavaScript 框架,用于构建用户界面. 1.Vue Dark Mode Vue.js 的一个极简主义的深色设计系统.它提 ...

  6. 修改jQuery.validate验证方法和提示信息

    1.添加验证方法 在jquery.validate.js文件中直接添加验证方法,例如: jQuery.validator.addMethod("Specialstring", fu ...

  7. Web安全系列(四):XSS 的防御

    简介 XSS 的防御很复杂,并不是一套防御机制就能就解决的问题,它需要具体业务具体实现. 目前来说,流行的浏览器内都内置了一些 XSS 过滤器,但是这只能防御一部分常见的 XSS,而对于网站来说,也应 ...

  8. 力荐!35 个最好用的 Vue 开源库!

    无论是开发新手还是经验丰富的老手,我们都喜欢开源软件包.对于开发者来说,如果没有这些开源软件包,很难想象我们的生活会变得多么疲惫不堪,而且靠咖啡度日也会成为家常便饭.所幸的是,随着 Vue.js 和 ...

  9. Github 上 36 个最实用的 Vue 开源库

    任何一个开发者,都是十分喜欢使用开源软件包的.因为它使开发工作变得更快速.高效.容易.如果没有开源软件包,开发工作将变得疲惫不堪,不断的重复造轮子! 下面整理了 Github 上 36 个实用的 Vu ...

随机推荐

  1. AT2382 A or...or B Problem

    传送门 还是看题解的啦 先考虑一个显而易见的结论:A和B二进制下最高的几位相同是没用的(设去掉的那些位之和为sum) 然后我们设\(d\)为二进制下从高位到低位第一位不相同的,\(k\)为B从高位到低 ...

  2. 黑马MySQL数据库学习day03 级联 多表查询 连接和子查询 表约束

    /* 存在外键的表 删表限制: 1.先删除从表,再删除主表.(不能直接删除主表,主表被从表引用,尽管实际可能还没有记录引用) 建表限制: 1.必须先建主表,再建从表(没有主表,从表无法建立外键关系) ...

  3. springMvc json 参数

    以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一 ...

  4. jQuery树形控件zTree使用

    http://www.cnblogs.com/AutumnRhyme/p/5915769.html .................................................. ...

  5. JadClipse

    JadClipse 介绍:JadClipse是一个Eclipse插件,无缝地集成了Jad(快速Java反编译器)与Eclipse.通常,当打开一个类文件,类文件查看器将显示一个简短的API类的轮廓.如 ...

  6. Java面向对象_抽象类、接口

    一.抽象类 概   念:很多具有相同特征和行为的对象可以抽象为一个类:很多具有相同特征和行为的类可以抽象为一个抽象类 关键字:abstract 规   则:1.抽象类可以没有抽象方法,有抽象方法的类必 ...

  7. 【Linux】linux下vi命令大全

    进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...

  8. 【JavaEE】WebService到底是什么?

    一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...

  9. log(A/B) = logA -logB

    令 X = logA, Y = logB, Z=log(A/B) .2x = A, 2y = B, 2z = A/B, 则有 2z = A/B = 2x / 2y = 2x-y ,有z = x-y,即 ...

  10. Python编程实现USB转RS485串口通信

    ---作者吴疆,未经允许,严禁转载,违权必究--- ---欢迎指正,需要源码和文件可站内私信联系--- -----------点击此处链接至博客园原文----------- 功能说明:Python编程 ...