Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.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正则表达式,以逗号分隔,最后3位数字,然后是2位数字_Javascript_Regex - Fatal编程技术网

Javascript正则表达式,以逗号分隔,最后3位数字,然后是2位数字

Javascript正则表达式,以逗号分隔,最后3位数字,然后是2位数字,javascript,regex,Javascript,Regex,我正在寻找一个正则表达式以美国逗号格式分开金额,如下所示 1111111111 to 1,11,11,11,111 function formatNumber(num) { return num.toString().replace(/(\d)(?=(\d{2})*(\d{3})+(?!\d))/g, '$1,') } console.info(formatNumber(2665.68)) console.info(formatNumber(102665.68)) console.i

我正在寻找一个正则表达式以美国逗号格式分开金额,如下所示

1111111111 to 1,11,11,11,111
function formatNumber(num) {
  return num.toString().replace(/(\d)(?=(\d{2})*(\d{3})+(?!\d))/g, '$1,')
}

console.info(formatNumber(2665.68)) 
console.info(formatNumber(102665.68)) 
console.info(formatNumber(111102665.32)) 
console.info(formatNumber(11111111.32))
我试着像下面一样

1111111111 to 1,11,11,11,111
function formatNumber(num) {
  return num.toString().replace(/(\d)(?=(\d{2})*(\d{3})+(?!\d))/g, '$1,')
}

console.info(formatNumber(2665.68)) 
console.info(formatNumber(102665.68)) 
console.info(formatNumber(111102665.32)) 
console.info(formatNumber(11111111.32))

基本上是最后三位数,然后是两位数

我发现了许多分隔3位、2位或4位的正则表达式

我尝试将3和数字分隔结合起来,但缺乏正则表达式知识无法实现

请帮忙

谢谢

您可以使用

.replace(/(?!^)(?=(?:\d{2})*\d{3}(?:\.|$))/g, ',')

详细信息

  • (?!^)
    -不是字符串位置的开头
  • (?=(?:\d{2})*\d{3}(?:\.\124;$)
    -在当前位置的右侧,必须有
    • (?:\d{2})*
      -两位数字的零次或多次出现
    • \d{3}
      -三位数字
    • (?:\.\124;$)
      -
      或字符串结尾
JavaScript演示:

函数格式编号(num){
return num.toString().replace(/(?!^)(?=(?:\d{2})*\d{3}(?:\.\124;$)/g',,'))
}
控制台信息(格式编号(2665.68))
控制台信息(格式编号(102665.68))
控制台信息(格式编号(111102665.32))

console.info(formatNumber(11111111.32))
我对正则表达式有基本的了解,但无法了解如何使组以最后的3结尾,然后以2开头,你能给我一些提示吗?我已经更新了postOk,我明白了,试试
。替换(/(?!^)(?=(?:\d{2})*\d{3}(?:\.\124$)/g',
。如果分数部分始终存在,您可以删除
(?:\.|$)
替换为
\。
非常感谢兄弟,它只解决了一个问题兄弟,如果我给-280.00这样的负值,它的显示-,280。00@Md.ParvezAlam然后使用
/(?),见非常感谢兄弟