运营商判断正则表达式&emoji表情过滤&时间格式化

  • 概述

    近期在项目中遇到三个问题,一是需要前端根据手机号判断运营商的场景,不考虑虚拟运行商及携号转网的情况,只能通过号段的正则表达式来判断;二是需要前端过滤用户输入内容,不允许emoji表情入库,否则数据库会出现问题;三是时间格式化处理。以下分别是三个问题的处理方法。

  • 运营商判断

    const getServiceProvider=(tel)=>{
      const chinaTelecom = /^(133|153|173|177|180|181|189|199)\d{8}$/   //电信
      const chinaUnicom = /^(130|131|132|145|155|156|166|175|176|185|186)\d{8}$/ //联通
      const chinaMobile = /^(134|135|136|137|138|139|147|150|151|152|157|158|159|178|182|183|184|187|188|198)\d{8}$/ //移动
      let result = {
        isMobile: false,
        operator: 'unknown'
      };
      if (chinaTelecom.test(tel)){
        result.isMobile = true;
        result.operator = 'China Telecom';
      } else if (chinaUnicom.test(tel)){
        result.isMobile = true;
        result.operator = 'China Unicom';
      } else if (chinaMobile.test(tel)){
        result.isMobile = true;
        result.operator = 'China Mobile';
      }
      return result;
    }
    
  • emoji表情过滤

    function filterEmoji(name) {
      let str = name.replace(/[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF][\u200D|\uFE0F]|[\uD83C|\uD83D|\uD83E][\uDC00-\uDFFF]|[0-9|*|#]\uFE0F\u20E3|[0-9|#]\u20E3|[\u203C-\u3299]\uFE0F\u200D|[\u203C-\u3299]\uFE0F|[\u2122-\u2B55]|\u303D|[\A9|\AE]\u3030|\uA9|\uAE|\u3030/ig, "");
      return str;
    }
    
  • 时间格式化处理

    function timeFilter(time){
      let date = time? new Date(time): new Date();
      let month = date.getMonth()<9? `0${date.getMonth()+1}`: (date.getMonth()+1);
      let day = date.getDate()<10? `0${date.getDate()}`: date.getDate();
      let hours = date.getHours()<10?`0${date.getHours()}`:date.getHours();
      let min = date.getMinutes()<10?`0${date.getMinutes()}`:date.getMinutes();
      let sec = date.getSeconds()<10?`0${date.getSeconds()}`:date.getSeconds();
      return date.getFullYear()+'-'+month+'-'+day+ " " +hours+':'+min+':'+sec;
    }
    
发布了58 篇原创文章 · 获赞 85 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/codezha/article/details/101597043