在字符串中添加多个连续的整数

时间:2017-02-06 14:30:16

标签: javascript html regex

我有一些javascript代码可以生成包含字符和整数的变量。

我需要将此字符串中的连续整数加在一起,同时不影响其他单个或后续的连续整数。

让我说我的意见是

GhT111r1y11rt

我需要输出:

GhT3r1y2rt

我将如何做到这一点?

3 个答案:

答案 0 :(得分:7)

使用String#replace方法进行回调,内部回调使用String#splitArray#reduce方法计算总和。

console.log(
  'GhT111r1y11rt'.replace(/\d{2,}/g, function(m) { // get all digit combination, contains more than one digit
    return m.split('').reduce(function(sum, v) { // split into individual digit
      return sum + Number(v) // parse and add to sum
    }, 0) // set initial value as 0 (sum)
  })
)

\d{2,}匹配2个或更多个数字重复,\d+更好,因为我们不想替换单个数字。

答案 1 :(得分:0)

方法isNaN()在字符为数字时返回true,使用substr单独检查每个字符

答案 2 :(得分:0)

对于重复多次的相同数字,您可以这样做(如示例字符串中所示):

'GhT111r1y11rt'.replace(/(\d)\1+/g, function (m,g1) { return g1 * m.length;});

(\d)捕获第一个数字
\1+重复捕获的数字(来自第1组)