对正则表达式产生的所有类型的数字求和

Sum all kind of number resulting from regular expression

本文关键字:类型 数字 求和 正则表达式      更新时间:2023-09-26

我正在研究一个函数,它将文本中的所有数字相加:

'use strict';
var sum = function(text, regex) {
  var match;
  return !!(match = text.match(regex || /'d+/g)) ?
    match.reduce(function(prev, curr) {
      return +prev + +curr;
    })
  : 0;
}
console.log(sum('1 12 40'));
console.log(sum('10 12 40'));
console.log(sum('1 12 510'));
console.log(sum('LLLLLLLL'));
console.log(sum('10 1'));

并且不工作 它与点的数字:

    'use strict';
    var sum = function(text, regex) {
      var match;
      return !!(match = text.match(regex || /'d+/g)) ?
        match.reduce(function(prev, curr) {
          return +prev + +curr;
        })
      : 0;
    }
    console.log(sum('1.10 12.40 40.30'));

所以,我想寻求帮助。我怎么也可以用指针对数字求和?

谢谢。

使用将

数字与小数点匹配的正则表达式

var sum = function(text, regex) {
  return (text.match(regex || /'d*(?:'.'d*)?/g) || [])
  .reduce(function(prev, curr) {
    return prev + +curr;
  }, 0);
}
document.write(sum('1.10 12.40 40.30'));

如果sum期望数字作为字符串作为参数,可以将String.prototype.split()RegExp /'s/一起使用,Array.prototype.map()Number一起使用作为回调

"use strict";
var sum = function(text, regex) {
  var match;
  return !!(match = text.split(regex || /'s/).map(Number)) ?
    match.reduce(function(prev, curr) {
      return prev + curr;
    })
  : 0;
}
console.log(sum("1.10 12.40 40.30"));

给定输入字符串的格式,您可以首先使用 String split() 拆分值,然后循环对值求和:

function sum(text) {
  var arr = text.split(" ");
  var total = 0;
  for (var i in arr) {
    if (/['d.]+/g.test(arr[i])) {
      total += parseFloat(/['d.]+/g.exec(arr[i]));
    }
  }
  document.write("The sum is " + total);
}
sum("1.10 12.40 40.30");