处理字符串中的负数

时间:2009-12-06 20:37:22

标签: javascript regex math

我有一个简单但令人困惑的问题,数学。

以下代码将从字符串中获取一个数字(通常包含在span或div中),并从中减去1的值。

.replace(/(\d+)/g, function(a,n){ return (+n-1); });

这非常有效,除非我们低于零。一旦我们达到-1,我们显然正在处理负减法。

-1 - 1 = -0
-0 - 1 = --1

我该如何避免这种情况?这可能是我在这里遇到的一般问题。

2 个答案:

答案 0 :(得分:6)

问题是你的函数没有将“-1”视为负数 - 它被视为连字符后跟正数1.

/(-?\d+)/g也将捕获一个领先的连字符。

答案 1 :(得分:2)

您的.replace(/(\d+)/g)未捕获前导-。 如果您希望添加内容正确,则需要/(-?\d+)/之类的内容。