RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1011490
Accepted
Pavel
Pavel
Asked:2020-08-08 21:04:04 +0000 UTC2020-08-08 21:04:04 +0000 UTC 2020-08-08 21:04:04 +0000 UTC

数字格式在数字之间添加空格,直到句号或逗号

  • 772

正则表达式应该像这样格式化数字:

1000.999 -> 1000.999

10000.99 -> 10000.99

1000000 -> 1000000

function format(value) { ... }
javascript
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Best Answer
    Wiktor Stribiżew
    2020-08-08T21:40:06Z2020-08-08T21:40:06Z

    ES6+ 示例:

    let strs = ['1000,999', '10000.99', '1000000'];
    for (var s of strs) {
      let [_, num, suffix] = s.match(/^(.*?)((?:[,.]\d+)?|)$/);
      console.log(`${num.replace(/\B(?=(?:\d{3})*$)/g, ' ')}${suffix}`);
    } // -> 1 000,999 , 10 000.99 , 1 000 000

    ES5 示例:

    var strs = ['1000,999', '10000.99', '1000000'];
    for (var i=0; i<strs.length; i++) {
      var m = strs[i].match(/^(.*?)((?:[,.]\d+)?|)$/);
      if (m) {
        console.log(m[1].replace(/\B(?=(?:\d{3})*$)/g, ' ') + m[2]);
      } else {
        console.log(strs[i]);
      }
    } // -> 1 000,999 , 10 000.99 , 1 000 000

    重点是将点或逗号前后的部分分开,在第一部分插入空格,然后将它们组合起来。

    细节

    • ^(.*?)((?:[,.]\d+)?|)$:
      • ^- 行首
      • (.*?)- 子模式 #1:0 个或多个任意字符(可以替换(\d*)为仅捕获数字)
      • ((?:[,.]\d+)?|)- 子模式 #2:点或逗号后跟 1+ 位数字或空字符串
      • $- 行结束

    replace(/\B(?=(?:\d{3})*$)/g, ' ')在该点插入 1 个空格,后跟 0 次或多次重复 3 位数字,直到行尾。

    • 5
  2. Crus
    2020-08-08T21:12:02Z2020-08-08T21:12:02Z

    无规律的变体:

    这是通过 Intl.NumberFormat 完成的 - 这里有一个码头。

    它也适用于开箱即用的点 :) 对于逗号,您必须深入挖掘,让我们这样做.replace(',', '.'),以防您需要再次返回原来的符号.replace('.', ',')

    例子:

    function format(value) {
      let res;
      
      (value.indexOf(',') != -1) ? res = new Intl.NumberFormat('ru-RU').format(value.replace(',', '.')).replace('.', ',') : res = new Intl.NumberFormat('ru-RU').format(value).replace(',', '.');
      
      return res;
    }
    
    console.log(format('12312312,123'));
    console.log(format('12312312.123'));
    console.log(format('12312312'));

    • 1
  3. OPTIMUS PRIME
    2020-08-08T21:36:24Z2020-08-08T21:36:24Z

    我不知道是否可以从字符串末尾开始替换......所以我尝试了这个:

    var a = "1000,999"
    var b = 10000.99;
    var c = -1000000;
    
    
    function bubu(a){
      var point = "";
      //Пока удаляю, но сохраняю целую часть...
      var x = String(a).replace(/(\.|,)\d+/, function(m){ point = m; return ""; });
      
      x = x.split("").reverse().join("")
           .replace(/(\d{3})/g,"$1 ")
           .split("").reverse().join("");
      //Разбил в массив, перевернул, расставил пробелы, перевернул обратно.
      return x + point;
    }
    
    console.log( bubu(a) );
    console.log( bubu(b) );
    console.log( bubu(c) );

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5