前端常用方法记录

这篇博客分享了几个常用的正则表达式,包括手机号码、银行卡和身份证号的验证,并提供了一个完整的身份证验证函数。此外,还包含了一些前端开发中的实用函数,如获取URL、判断是否在APP内或钉钉中,以及获取日期时间的格式化方法。这些函数对于前端开发人员在日常工作中非常有用。
摘要由CSDN通过智能技术生成

一、手机号码正则

export const phoneReg = /^(0|86|17951)?1[123456789][0-9]{9}$/;

二、银行卡简单验证

export const idReg = /^([1-9]{1})(\d{14}|\d{15}|\d{16}|\d{17}|\d{18})$/;

三、身份证号正则校验

const valid = {
  // 精确验证身份证
  isChinaIDCard: function (StrNo) {
    let res = {
      tip: '验证成功',
      value: true
    };
    StrNo = StrNo.toString();
    // 长度验证
    if (StrNo.length === 0) {
      res = {
        tip: '请填写您的证件号码!',
        value: false
      };
      return res;
    } else if (StrNo.length === 18) {
      // 验证前17位是数字
      if (valid.validateNumber(StrNo.substr(0, 17))) {
        // 身份证合法校验
        if (valid.validateCodeBy18IdCard(StrNo)) {
          res = {
            tip: '成功',
            value: true
          };
          return res;
        } else {
          res = {
            tip: '校验错误',
            value: false
          };
          return res;
        }
      } else {
        res = {
          tip: '不是合法数字',
          value: false
        };
        return res;
      }
    } else {
      res = {
        tip: '不是18位',
        value: false
      };
      return res;
    }
  },
  validateCodeBy18IdCard: function (StrNo) {
    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
    var aIdCard = StrNo.split(''); // 得到身份证数组
    var sum = 0;
    if (aIdCard[17].toLowerCase() === 'x') {
      aIdCard[17] = 10; // 将最后位为x的验证码替换为10方便后续操作
    }
    for (var i = 0; i < 17; i++) {
      sum += Wi[i] * aIdCard[i]; // 加权求和
    }
    var valCodePosition = sum % 11;
    if (aIdCard[17].toString() === ValideCode[valCodePosition].toString()) {
      return true;
    } else {
      // console.log('校验错误')
      return false;
    }
  },
  validateNumber: function (oNum) {
    if (/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$/.test(oNum)) {
      return true;
    }
  }
};
module.exports = valid;

四、区分测试地址和生产地址

export function getUrl() {
  return window.location.href.split('#')[0] + '#'
}

五、是否在APP内

export function isInApp() {
  return (window.navigator.userAgent.match(/ylsystemid:kanyuhang&yl/ig))
}

六、是否在钉钉

export function isInDingding (){
  var ua = window.navigator.userAgent.toLowerCase();
  return /DingTalk/i.test(ua);
}

七、获取年月日时分秒

export function getTime(t){
  let time = new Date(t)
  let year = time.getFullYear()
  let month = time.getMonth() + 1 < 10 ? '0' + (time.getMonth() + 1) : time.getMonth() + 1
  let day = time.getDate() < 10 ? '0' + (time.getDate()) : time.getDate()
  let hour = time.getHours()< 10 ? '0' + (time.getHours()) : time.getHours();
  let min = time.getMinutes()< 10 ? '0' + (time.getMinutes()) : time.getMinutes();
  let sec = time.getSeconds()< 10 ? '0' + (time.getSeconds()) : time.getSeconds();  
  return year+'-'+month+'-'+day+' '+hour+':'+min+':'+sec
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值