Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数字换行到字符的左侧_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 将数字换行到字符的左侧

Javascript 将数字换行到字符的左侧,javascript,jquery,regex,Javascript,Jquery,Regex,为了在数字字符串中添加逗号,我使用以下命令: someNum.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g,“,” 我需要多做一件事。我需要将所有内容都包装到逗号的左边(所有代表数千或以上的数字都在span标记中),以便为这些数字上色 因此,如果someNum是42221,则输出为42221,如果someNum是221,则输出为221 谢谢!假设你永远不会进入百万,在你最初的替换之后,你可以做: someNum = someNum.replace(/(

为了在数字字符串中添加逗号,我使用以下命令:

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

我需要多做一件事。我需要将所有内容都包装到逗号的左边(所有代表数千或以上的数字都在
span
标记中),以便为这些数字上色

因此,如果
someNum
42221
,则输出为
42221
,如果
someNum
221
,则输出为
221


谢谢!

假设你永远不会进入百万,在你最初的替换之后,你可以做:

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

带有两个正则表达式:

var someNum = 12345;
var commaNum = someNum.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",").replace(/^(\d+),/,"<span>$1</span>,");
alert(commaNum);
var someNum=12345;
var commaNum=someNum.toString();
警报(commaNum);
如果以百万计,它将无法突出数千

如果数字可以大于99999,则可以使用此正则表达式匹配任何内容。它将在匹配项中包含逗号

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

我不知道这是否是最有效的方法,但这是有效的:

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
someNum.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g,“,”)。replace(/^(.*),(\d+)$/,“$1,$2”)
123456789 = 123,456,789
42221 = 42,221
221 = 221

不同的方法,检查字符串长度

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);
var num=“432232121678”;
var num2=“221”;
函数解析(num)
{
var千=num.substring(0,num.length-3);
如果(千分之一长度>0)
{
返回“+000.replace(/\B(?=(?:\d{3})+(?!\d))/g,”,“+”,“+num.substring(num.length-3)
}
返回num;
}
解析(num);
解析(num2);
输出

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

如果以百万计,则无法突出显示千。
则这不是正确的解决方案。此解决方案是短视的。+1用于处理超过千的情况。请注意,OP中的代码和此答案均不包含小数点。这严格适用于整数。