After getting this answer from aduch:
With this regex:
/((-|\+)?([0-9]+|)(\.?[0-9]+))/g
You can use Array.prototype.reduce like this to sum your numbers up
var str = 'Hello +0.50 World Hello 1 World Hello -10 World',
re = /((-|\+)?([0-9]+|)(\.?[0-9]+))/g,
sum;
sum = (str.match(re) || []).reduce(function (prev, current) {
if (Object.prototype.toString.call(prev) !== '[object Number]') {
prev = parseFloat(prev, 10);
}
return prev + parseFloat(current, 10);
}, 0);
// sum should be equal to -8.5 here
Note that `str.match(re)` may return `null`, so we just make sure we call `reduce` on an array.
我想知道是否有可能忽略括号中的内容以及当前的内容。
以下是将一起添加的字符串示例:
+0.08 attack damage per level (+1.35 at champion level 18)
它当前在字符串中添加了所有内容,是的 - 我确实要求,但它不会将0.08
添加到自身,而1.35
添加到自身,它会将它们合并在一起。
我或者要么将它们分开,因为一个在括号中,一个不是或者只是忽略括号内的内容。 ("级别之后的内容......"在所有情况下都应忽略括号内)
答案 0 :(得分:0)
要保留第一个号码,请尝试:
^((-|\+)?([0-9]+|)(\.?[0-9]+))
或更简单
^((-|\+)?\d*\.?\d*)
如果您想要多个匹配项,请记住使用捕获组。 http://www.regular-expressions.info/brackets.html