Javascript 如何格式化货币,但允许负数
我有一个很棒的功能,可以在用户输入货币时对其进行格式化,但是我似乎不知道如何接受负值Javascript 如何格式化货币,但允许负数,javascript,jquery,Javascript,Jquery,我有一个很棒的功能,可以在用户输入货币时对其进行格式化,但是我似乎不知道如何接受负值 $(this).on('change click keyup input paste', 'input.dollar', function() { $(this).val(function(index, value) { return value.replace(/(?!\.)\D/g, "").replace(/(?:\..*)\./g, "").replace(/\.(\d\d)\d
$(this).on('change click keyup input paste', 'input.dollar', function() {
$(this).val(function(index, value) {
return value.replace(/(?!\.)\D/g, "").replace(/(?:\..*)\./g, "").replace(/\.(\d\d)\d?$/, '.$1').replace(/\B(?=(\d{3})+(?!\d))/g, ",");
});
});
下面是一个更容易理解的例子:
(编号(''.replace('1','').replace('',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$0.00"
(编号('1'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$1.00"
(编号('10'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$10.00"
(编号('100'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$100.00"
(编号('1000'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"$1,000.00"
(编号('-1000'。替换('$,'')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"-$1,000.00"
(编号('-1000.09'。替换('$','')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"-$1,000.09"
(编号('$-1000.09'。替换('$','')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"-$1,000.09"
(编号('-$1000.09'.替换('$','')。替换(',',''))
.toLocaleString('en-US',{style:'currency',currency:'USD'});
"-$1,000.09"
我自己想出来的。也许这不是最好的方法
$(this).on('change click keyup input paste', 'input.dollar', function() {
$(this).val(function(index, value) {
var sign = value.charAt(0),
$return = 0;
$return = value.replace(/(?!\.)\D/g, "").replace(/(?:\..*)\./g, "").replace(/\.(\d\d)\d?$/, '.$1').replace(/\B(?=(\d{3})+(?!\d))/g, ",");
if (sign == '-')
{
$return = '-'+$return;
}
return $return;
});
});
为什么要替换第一个示例中的
1
。那是打字错误吗?