2-5 正则表达式以及数值的扩展

44 阅读2分钟

正则表达式的作用是用来匹配字符串的

i (忽略大小写) m (多行匹配) g (全局匹配)

y(粘连修饰符)

const str = 'aaa\_aa\_a'
const reg1 = /a+/g  // 每次匹配剩余的
const reg2 = /a+/y  // 剩余的第一个开始匹配
console.log(reg1.exec(str))
console.log(reg2.exec(str))

console.log(reg1.exec(str))  // aa
console.log(reg2.exec(str))  // null

console.log(reg1.exec(str))  // a
console.log(reg2.exec(str))  // 又从头开始找

y修饰符会在当前剩余的第一个开始匹配

u修饰符 Unicode 表示有一定的范围

cosnt str = '\uD842\uDFB7' // 表示的一个字符
console.log(/^\uD842/.test(str)) // es5 true
console.log(/^\uD842/u.test(str)) //es6 false

//.除了换行符意外的任意单个字符

console.log(/^.$/.test(str)) //fasle
console.log(/^.$/u.test(str)) //true

console.log(/\u{61}/.test('a')/)  // false
console.log(/\u{61}/u.test('a')/)  // true

数值的扩展 二进制0B 八进制0O Number.isFinite(), Number.isNaN() Number.parseInt(), Number.parseFloat() Number.isInteger() 0.1 + 0.2 === 0.3 ??? Math 新增方法

十进制 -> 二进制

const a = 5
console.log(toString(2)) // 101

二进制 -> 十进制

const b = 101
console.log(parseInt(5.5)) // 5
console.log(parseInt(b, 2)) // 5

ES6 0B 二进制 0O 八进制

const a = 0B0101
console.log(a) // 5

const b = 0o777
console.log(b) //511

Number.isFinite()

Number.isFinite(5) // 判断当前数值是不是有限的
Number.isFinite(5.5)
Number.isFinite(Infinite) // false

Number.isNaN()

console.log(Number.isNaN(NaN))  // true
console.log(Number.isNaN(1))  // false
  • 在ES5 之前isNaN()是挂载在window上面的,逐渐减少全局的方法,是我们的语言更加的模块化
console.log(Number.parseInt(5.5)) // 5  可以转成整数
console.log(Number.parseFloat(5.5)) // 5.5

console.log(Number.isInteger())  // 判断当前数字是不是整数

0.1 + 0.2 === 0.3 // false

  • // IEEE 754 双精度标准
  • 在计算机存储的时候,存储空间是有限的,如果超出之后会自动存储近似值
  • 所以在计算的时候会出现 0.1 + 0.2 != 0.3
const max = Math.pow(2, 53)
console.log(max)

console.log(Number.MAX\_SAFE\_INTEGER === max -1) // true

// 去除小数剩整数部分, 会先把当前参数转成数字之后再取整输出

console.log(math.trunc(5.5))
console.log(math.trunc(true)) // 1
console.log(math.trunc(false)) // 0


Math.sign() 正数就返回正数,负数就返回负数,0 就返回0 NaN就返回NaN true 就是1 false 就是 0

console.log(Math.sign(5)) // 1
Math.cbrt() // 计算一个数的立方根
console.log(Math.cbrt(8))