资讯专栏INFORMATION COLUMN

form表单验证包括(强悍的身份验证和银行卡验证),不只是正则哦

ShevaKuilin / 922人阅读

摘要:银行卡验证银行卡验证身份证验证身份证号码为位或者位,位时全为数字,位前位为数字,最后一位是校验位,可能为数字或字符。

银行卡验证:

/**
 * 银行卡验证
 * @param {*string} str
 */
function isBankCard(str) {
    var regex = /^(998801|998802|622525|622526|435744|435745|483536|528020|526855|622156|622155|356869|531659|622157|627066|627067|627068|627069)d{10}$/;
    if (regex.test(str)) {
        return true;
    }
    return false;
}

身份证验证:

function isIdCard (idcard) {
  if (!idcard) {
    return false;
  }
  var num = idcard.toUpperCase();
  //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
  if (!/(^d{15}$)|(^d{17}([0-9]|X)$)/.test(num)) {
    // alert("输入的身份证号长度不对,或者号码不符合规定!
15位号码应全为数字,18位号码末位可以为数字或X。");
    return false;
  }
  //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
  //下面分别分析出生日期和校验位
  var len, re;
  len = num.length;
  if (len == 15) {
    re = new RegExp(/^(d{6})(d{2})(d{2})(d{2})(d{3})$/);
    var arrSplit = num.match(re);

    //检查生日日期是否正确
    var dtmBirth = new Date(
      "19" + arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]
    );
    var bGoodDay;
    bGoodDay =
      dtmBirth.getYear() == Number(arrSplit[2]) &&
      dtmBirth.getMonth() + 1 == Number(arrSplit[3]) &&
      dtmBirth.getDate() == Number(arrSplit[4]);
    if (!bGoodDay) {
      // alert("输入的身份证号里出生日期不对!");
      return false;
    } else {
      //将15位身份证转成18位
      //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
      var arrInt = new Array(
        7,
        9,
        10,
        5,
        8,
        4,
        2,
        1,
        6,
        3,
        7,
        9,
        10,
        5,
        8,
        4,
        2
      );
      var arrCh = new Array(
        "1",
        "0",
        "X",
        "9",
        "8",
        "7",
        "6",
        "5",
        "4",
        "3",
        "2"
      );
      var nTemp = 0, i;
      num = num.substr(0, 6) + "19" + num.substr(6, num.length - 6);
      for (i = 0; i < 17; i++) {
        nTemp += num.substr(i, 1) * arrInt[i];
      }
      num += arrCh[nTemp % 11];
      return true;
    }
  }
  if (len == 18) {
    re = new RegExp(/^(d{6})(d{4})(d{2})(d{2})(d{3})([0-9]|X)$/);
    var arrSplit = num.match(re);

    //检查生日日期是否正确
    var dtmBirth = new Date(
      arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]
    );
    var bGoodDay;
    bGoodDay =
      dtmBirth.getFullYear() == Number(arrSplit[2]) &&
      dtmBirth.getMonth() + 1 == Number(arrSplit[3]) &&
      dtmBirth.getDate() == Number(arrSplit[4]);
    if (!bGoodDay) {
      //alert(dtmBirth.getYear());
      //alert(arrSplit[2]);
      //alert("输入的身份证号里出生日期不对!");
      return false;
    } else {
      //检验18位身份证的校验码是否正确。
      //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
      var valnum;
      var arrInt = new Array(
        7,
        9,
        10,
        5,
        8,
        4,
        2,
        1,
        6,
        3,
        7,
        9,
        10,
        5,
        8,
        4,
        2
      );
      var arrCh = new Array(
        "1",
        "0",
        "X",
        "9",
        "8",
        "7",
        "6",
        "5",
        "4",
        "3",
        "2"
      );
      var nTemp = 0, i;
      for (i = 0; i < 17; i++) {
        nTemp += num.substr(i, 1) * arrInt[i];
      }
      valnum = arrCh[nTemp % 11];
      if (valnum != num.substr(17, 1)) {
        //alert("18位身份证的校验码不正确!应该为:" + valnum);
        return false;
      }
      return true;
    }
  }
  return false;
}

手机号码验证:

//验证手机号码
function isMobile(s) {
  var regu = /^(13[0-9]|15[0-9]|18[0-9]|147|145|149|170|171|173|175|176|177|178)d{8}$/;
  if (regu.test(s)) {
    return true;
  } else {
    return false;
  }
}

固话验证:

//验证固话
function isTelephone(str) {
  var myReg = /([0-9]{3,4}-)?[0-9]{7,8}/;
  if (myReg.test(str)) return true;
  return false;
}

中文文字验证:

//验证是否是中文
function isChinese(str) {
  var regu = "^[u4E00-u9FA5uF900-uFA2D]+$";
  var re = new RegExp(regu);
  if (re.test(str)) {
    return true;
  } else {
    return false;
  }
}

邮箱验证:

//验证邮箱
function isEmail(str) {
  var myReg = /^(w-*.*)+@(w-?)+(.w{2,4})+$/;
  if (myReg.test(str)) return true;
  return false;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/82441.html

相关文章

  • 接口测试要测试什么?

    摘要:接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。二接口测试用例设计接口测试的用例设计是关键,不能只是单纯正常请求通过就算接口测试过了,要从业务功能性能等上去设计用例。 ...

    邱勇 评论0 收藏0
  • 常见六大Web 安全攻防解析

    摘要:想阅读更多优质原创文章请猛戳博客一,跨站脚本攻击,因为缩写和重叠,所以只能叫。跨站脚本攻击是指通过存在安全漏洞的网站注册用户的浏览器内运行非法的标签或进行的一种攻击。跨站脚本攻击有可能造成以下影响利用虚假输入表单骗取用户个人信息。 前言 在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本文主要侧重于分析几种常见的攻击的类型...

    lidashuang 评论0 收藏0
  • va.js——Vue 表单验证插件写作过程

    摘要:一表单验证模块的构成任何表单验证模块都是由配置校验报错取值这几部分构成的。其实我是想写个指令来完成表单验证的事的。当然表单验证这种是高度定制化的。 前言 前段时间,老大搭好了Vue的开发环境,于是我们愉快地从JQ来到了Vue。这中间做的时候,在表单验证上做的不开心,看到vue的插件章节,感觉自己也能写一个,因此就自己开始写了一个表单验证插件va.js。 当然为什么不找个插件呢? vu...

    suosuopuo 评论0 收藏0
  • vue-cdd-validator vue.js 表单验证插件介绍

    摘要:示例电话电话错误信息指示指令对应的表单控件的验证结果。其主要是根据验证的结果进行的值的变换。如果为空值则默认把所有带有验证的空间作为需要验证对象。 cddv vue.js 表单验证插件使用说明 版本:1.0.8-6 获取 github:这里 npm安装 npm i vue-cdd-validator --save yarn安装 yarn add vue-cdd-validator 安装...

    VEIGHTZ 评论0 收藏0
  • 前端技术 博客文章、书籍 积累

    摘要:好多编辑器例如等都支持这样的语法来快速的编写代码如何优雅地使用把标签放在结束标签之后结束标签之前的差别什么是响应式设计怎样进行 书籍 《JavaScriptDOM编程艺术》《JavaScript高级程序设计》《JavaScript框架设计》《JavaScript专家编程》《JavaScript Ninjia》《JavaScript语言精粹(修订版)》《JavaScript设计模式》《J...

    LiangJ 评论0 收藏0

发表评论

0条评论

ShevaKuilin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<