美文网首页
使用正则实现数字千分位处理

使用正则实现数字千分位处理

作者: 倒霉蛋儿_才才 | 来源:发表于2020-12-23 14:12 被阅读0次
    // 金额千分位格式化
    function momenyFormat(num) {
      // 数字转字符串
      let result = `${num}`;
      // 校验输入值是否为数字
      const regNumber = /^\d+$|(\d+\.\d+)/g;
      // 校验小数点及右侧部分
      const regRight = /(?<=\d)(\.\d+)/g;
      // 校验小数点左侧的部分
      const regLeft = /(\d)(?=(\d{3})+$)/g;
      // 判断是否是数字
      if (regNumber.test(result)) {
            // 判断是否包含小数点
        if (/\./g.test(result)) {
                // 提取小数点和右侧部分
          const right = regRight.exec(result)[0];
                // 替换小数点和右侧部分为空白,得到小数点左侧部分
                // 对左侧部分进行千分位处理
          const left = result.replace(regRight, "").replace(regLeft, "$1,");
                // 左右两部分拼接
          result = `${left}${right}`;
        } else {
                // 不包含小数点,直接千分位处理
          result = result.replace(regLeft, "$1,");
        }
      } else {
        console.warn(`invalid number ${num}`);
      }
      return result;
    }
    
    console.log(momenyFormat()); // warn + undefined
    console.log(momenyFormat(1231)); // '1,231'
    console.log(momenyFormat("123213.23211w")); // warn + '123213.23211w'
    console.log(momenyFormat(1232137.23211)); // 1,232,137.23211
    console.log(momenyFormat("32s.324")); // warn + "32s.324"
    console.log(momenyFormat("122213,343")); // warn + "122213,343"
    
    
    image.png

    相关文章

      网友评论

          本文标题:使用正则实现数字千分位处理

          本文链接:https://www.haomeiwen.com/subject/xqgynktx.html