正则相关应用

/**
 * 重写js native toFixed 方法
 * @param d
 * @returns { string | number }
 */
export function toFixed(d) {
  let s = this + ''
  if (!d) d = 0
  d = parseInt(d)
  if (s.indexOf('.') == -1) s += '.'
  s += new Array(d + 1).join('0')
  if (new RegExp('^(-|\\+)?(\\d+(\\.\\d{0,' + (d + 1) + '})?)\\d*$').test(s)) {
    s = '0' + RegExp.$2
    let pm = RegExp.$1
    let a = RegExp.$3.length
    let b = true
    if (a == d + 2) {
      a = s.match(/\d/g)
      if ((pm !== '-' && parseInt(a[a.length - 1]) > 4) || (pm === '-' && parseInt(a[a.length - 1]) > 5)) {
        for (var i = a.length - 2; i >= 0; i--) {
          a[i] = parseInt(a[i]) + 1
          if (a[i] == 10) {
            a[i] = 0
            b = i != 1
          } else break
        }
      }
      s = a.join('').replace(new RegExp('(\\d+)(\\d{' + d + '})\\d$'), '$1.$2')
    }
    if (b) s = s.substr(1)
    return (pm + s).replace(/\.$/, '')
  }
  return this + ''
}

  

猜你喜欢

转载自www.cnblogs.com/xiaohaifengke/p/11777083.html