我有一个简单但令人困惑的问题,数学。
以下代码将从字符串中获取一个数字(通常包含在span或div中),并从中减去1的值。
.replace(/(\d+)/g, function(a,n){ return (+n-1); });
这非常有效,除非我们低于零。一旦我们达到-1,我们显然正在处理负减法。
-1 - 1 = -0
-0 - 1 = --1
我该如何避免这种情况?这可能是我在这里遇到的一般问题。
答案 0 :(得分:6)
问题是你的函数没有将“-1”视为负数 - 它被视为连字符后跟正数1.
/(-?\d+)/g
也将捕获一个领先的连字符。
答案 1 :(得分:2)
您的.replace(/(\d+)/g)
未捕获前导-
。
如果您希望添加内容正确,则需要/(-?\d+)/
之类的内容。