正则实现数学运算

带你认识一下正则的强大!!!

function sum(n, m) {
  n = Array(n+1).join('#')
  m = Array(m+1).join('#')
  return n.replace(/$/, m).length
}
sum(3, 2)
// => 5
复制代码

function diff(n, m) {
  n = Array(n+1).join('#')
  m = Array(m+1).join('#')
  return n.replace(m, '').length
}
diff(3, 2)
// => 1
复制代码

function product(n, m) {
  n = Array(n+1).join('#')
  m = Array(m+1).join('#')
  return n.replace(/./g, m).length
}
product(3, 2)
// => 6
复制代码

function division(n, m) {
  n = Array(n+1).join('#')
  m = Array(m+1).join('#')
  return n.replace(new RegExp(m, 'g'),'#').length
}
division(6, 2)
// => 3
复制代码

function remainder(n, m) {
  n = Array(n+1).join('#')
  m = Array(m+1).join('#')
  return n.replace(new RegExp(m, 'g'),'').length
}
remainder(7, 2)
// => 1
复制代码

平方

function square(n) {
  n = Array(n+1).join('#')
  return n.replace(/./g, n).length
}
square(7)
// => 49
复制代码

奇偶性

function isOdd(n) {
  n = Array(n+1).join('#')
  return /^.(.{2})+$/.test(n)
}
isOdd(7)
// => true
复制代码

素数

function isPrime(n) {
  n = Array(n+1).join('#')
  return /^(?!(.{2,})\1+$)(?=.{2,}$)/.test(n)
}
isPrime(11)
// => true
复制代码

最大公约数

function greatestCommonDivisor(n, m) {
  n = Array( n + 1).join('#')
  m = Array( m + 1).join('#') 
  return (`${n}-${m}`).match(/^(.+)\1*-\1+$/)[1].length
}
greatestCommonDivisor(12, 8)
// => 4
复制代码

本文完。

欢迎阅读我的《JS正则迷你书》

猜你喜欢

转载自juejin.im/post/5c348695e51d4551ec60850e