JS中正负数的千位分隔符方法,利用正则表达式

function cc(s){ if(/[^0-9\.]/.test(s)) return "invalid value"; s=s.replace(/^(\d*)$/,"$1."); s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1"); s=s.replace(".",","); var re=/(\d)(\d{3},)/; while(re.test(s)) s=s.replace(re,"$1,$2"); s=s.replace(/,(\d\d)$/,".$1"); return "¥" + s.replace(/^\./,"0.") }
如何修改能够使负数也可以有千位分隔符

使用下面给出的函数可实现千分符支持正负数:

function comma(num) {
    var source = String(num).split(".");//按小数点分成2部分
        source[0] = source[0].replace(new RegExp('(\\d)(?=(\\d{3})+$)','ig'),"$1,");//只将整数部分进行都好分割
    return source.join(".");//再将小数部分合并进来
}
comma(-123456.789);//-123,456.789
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-01
function cc(s) {
if (/[^0-9\.\-]/.test(s)) return "invalid value";
s = s.replace(/^(-)?(\d*)$/, "$1$2.");
s = (s + "00").replace(/(-)?(\d*\.\d\d)\d*/, "$1$2");
s = s.replace(".", ",");
var re = /(\d)(\d{3},)/;
while (re.test(s)) s = s.replace(re, "$1,$2");
s = s.replace(/,(\d\d)$/, ".$1");
return "¥" + s.replace(/^\./, "0.")
}
第2个回答  2013-03-31
function cc(s) {
var h='';
if(s.charAt(0)=='-'){
h='-';
s=s.slice(1);
}
if (/[^0-9\.]/.test(s)) return "invalid value";
s = s.replace(/^(\d*)$/, "$1.");
s = (s + "00").replace(/(\d*\.\d\d)\d*/, "$1");
s = s.replace(".", ",");
var re = /(\d)(\d{3},)/;
while (re.test(s)) s = s.replace(re, "$1,$2");
s = s.replace(/,(\d\d)$/, ".$1");
return "¥" +h+ s.replace(/^\./, "0.")
}本回答被网友采纳