开发者

Wrap numbers to the left of a character

开发者 https://www.devze.com 2023-03-02 13:42 出处:网络
In order to add commas to a number string I\'m using the following: someNum.toString().replace(/\\B(?=(?:\\d{3})+(?!\\d))/g, \",\")

In order to add commas to a number string I'm using the following:

someNum.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",")

I need to do one extra thing. I need to wrap开发者_StackOverflow社区 everything to the left of the comma (all numbers representing thousands or above in a span tag in order to color those numbers.

So if someNum is 42221 the output whould be <span class="someColorClass">42</span>,221 and if someNum was 221 the output would be 221.

Thanks!


I don't know if its the most efficient way, but this works:

someNum.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",").replace(/^(.*),(\d+)$/,'<span class="someColorClass">$1</span>,$2')

123456789 = <span class="someColorClass">123,456</span>,789
42221 = <span class="someColorClass">42</span>,221
221 = 221


Assuming you never go into the millions, after your initial replace you can just do:

someNum = someNum.replace(/(\d*)(,\d{3})/g, '<span class="someColorClass">$1</span>$2');


With two regular expressions:

var someNum = 12345;
var commaNum = someNum.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",").replace(/^(\d+),/,"<span>$1</span>,");
alert(commaNum);

It would fail highlighting the thousands if it is in the millions.

Example

If the number can be greater than 99,999 than you can use this regular expression that matches anything. It will include the commas inside of the match.

var someNum = 12345;
var commaNum = someNum.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",").replace(/^([\d,]+)(,\d{3})/g,"<span>$1</span>$2");
alert(commaNum);

Example


Different approach, checking the string length...

var num = "432232121678";
var num2 = "221";

function Parse(num)
{
    var thousand = num.substring(0, num.length - 3);
    if (thousand.length > 0)
    {
        return "<span class=\"someColorClass\">" + thousand.replace(/\B(?=(?:\d{3})+(?!\d))/g, ",") + "</span>," + num.substring(num.length - 3)
    }
    return num;
}

Parse(num);
Parse(num2);

Output

"<span class="someColorClass">432,232,121</span>,678"
"221"

See this example on jsFiddle

0

精彩评论

暂无评论...
验证码 换一张
取 消