我有一个简单的功能,就是将字符串格式化为货币-它每3个字符添加一个空格:
function addSpace(n) {
var rx = /(\d+)(\d{3})/;
return String(n).replace(/^\d+/, function (w) {
while (rx.test(w)) {
w = w.replace(rx, '$1 $2');
}
return w;
});
}所以当我像这样使用它时:
addSpace("1234567.89")我得到了:
"1 234 567.89"但是对于负数,我不能得到相同的行为。
我想要addSpace("-1234567.89")版的-1 234 567.89
我应该如何改变我的函数才能得到这个结果呢?我试着在rx的开头添加-?,但是没有帮助。
我知道我可以在字符串中搜索-,如果找到了,就把它加到开头,但我想避免这种情况。
发布于 2014-08-27 18:27:52
只需将您的regex修改为:
/^-?\d+/输出:
"-1 234 567.89"Demo
发布于 2014-08-27 18:28:56
将-作为可选参数传递,使用/^-?\d+/作为RegEX
return String(n).replace(/^-?\d+/, function (w) {
while (rx.test(w)) {
w = w.replace(rx, '$1 $2');
}
return w;
});https://stackoverflow.com/questions/25524653
复制相似问题