常用正则

47 阅读1分钟

格式化手机号

let mobile = '13811111111' 
let mobileReg = /(?=(\d{4})+$)/g 
console.log(mobile.replace(mobileReg, '-')) // 138-1111-1111

千分位格式化

const formatMoney = (money) => {
  return money.replace(new RegExp(`(?!^)(?=(\\d{3})+${money.includes('.') ? '\\.' : '$'})`, 'g'), ',')  
}
formatMoney('123456789') // '123,456,789'

最多保留两位小数

/^(([1-9]{1}\d{0,9})|(0{1}))(\.\d{1,2})?$/
/^(([1-9]{1}\d*)|(0{1}))(\.|(\.\d{0,2}))?$/

手机号脱敏

phone.toString().replace(/^(\d{3})\d{4}(\d{4})$/, '$1****$2') // 136****2678

检测数据类型

function getType(obj, type){
  let finalType =  Object.prototype.toString.call(obj).replace(/^\[object (\S+)\]$/, '$1');
  return type ? finalType.toUpperCase()===type.toUpperCase() : finalType
}
console.log(getType('a')) // String
console.log(getType({a:1})) // Object
console.log(getType([1,2,3])) // Array
console.log(getType(undefined)) // Undefined
console.log(getType(null)) // Null

注意:上述方法对于检测NaN的数据类型不准确,需要额外判断