数字相关

千分位 \B \b

相关知识点:

  • ?=pattern 【匹配但不获取】
  • \b匹配单词边界 匹配的是单次字符和(,或者空格等)非单词字符之间的空隙
  • \B匹配字符和字符之间的空隙但不匹配单词边界
  • 上面reg匹配的就是一个字符空隙(并连接有3的倍数个数字和单词边界)

示例:

var str = "12345789";
function transformThousands(value) {
  var reg = /\B(?=(\d{3})+\b)/g;
  return String(value).replace(reg, ',');
}
console.log(transformThousands(str)); // 12,345,789

数字取值

将数字的取值固定在一个范围,在范围内则使用,否则使用边界值。

function limitNum(min, max) {
  return function(value) {
    return Math.max(min, Math.min(value, max));
  }
}

var getNum = limitNum(10, 100);
console.log(getNum(2)); // 10
console.log(getNum(20)); // 20
console.log(getNum(200)); // 100

数字补零

比如 1 - 9,需要补位成 01 - 09

// length 用来作为 padStart的第一个参数
function addZero(length) {
  return (num) => {
    return `${num}`.padStart(length, '0')
  }
}

var addZero2= addZero(2);
console.log(addZero2(9)) // '09'
console.log(addZero2(20)) // '20'

隐藏中间部分手机号

let str = '90012345999'
console.log(str.replace(/(\d{3})\d+(\d{3})/,'$1****$2'));
// 或
console.log(str.replace(/(.{3}).*(.{3})/,"$1*****$2")); // 可以任意个星号