JavaScript 中用于格式化数字的正则表达式

2024-02-04

我需要使用 JavaScript 在网页上显示格式化的数字。我想对其进行格式化,以便在正确的位置有逗号。我该如何使用正则表达式来做到这一点?我已经得到这样的东西:

myString = myString.replace(/^(\d{3})*$/g, "${1},");

...然后意识到这会比我想象的更复杂(上面的正则表达式是差远了到我需要的)。我做了一些搜索,但很难找到适合于此的东西。

基本上,我想要这些结果:

  • 45 变成 45
  • 3856 变成 3,856
  • 398868483992 变为 398,868,483,992

...你明白了。


这可以在单个正则表达式中完成,无需迭代。如果您的浏览器支持 ECMAScript 2018,您可以简单地使用lookaround并在正确的位置插入逗号:

搜索(?<=\d)(?=(\d\d\d)+(?!\d))并全部替换为,

在旧版本中,JavaScript 不支持lookbehind,因此这不起作用。幸运的是,我们只需要改变一点点:

搜索(\d)(?=(\d\d\d)+(?!\d))并全部替换为\1,

所以,在 JavaScript 中,这看起来像:

result = subject.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,");

解释:断言从字符串中的当前位置开始,可以匹配三的倍数的数字,并且当前位置左边有一个数字。

只要“点右侧”没有太多数字(否则您将得到 123,456.789,012),这也适用于小数 (123456.78)。

您还可以在 Number 原型中定义它,如下所示:

Number.prototype.format = function(){
   return this.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
};

然后像这样使用它:

var num = 1234;
alert(num.format());

图片来源:杰弗里·弗里德尔,掌握正则表达式,第三。版 http://oreilly.com/catalog/9780596528126/,p。 66-67

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 中用于格式化数字的正则表达式 的相关文章

  • Javascript 函数查找数字的倍数

    创建一个名为的函数multiplesOf 它将接受两个参数 第一个参数是数字数组 第二个参数是数字 该函数应返回一个新数组 该数组由参数数组中的每个数字组成 该数字是参数数字的倍数 So multiplesOf 5 6 7 8 9 10 3
  • JavaScript 中的埃拉托斯特尼筛法对大量数据无限运行

    我一直在尝试写埃拉托斯特尼筛法 http en wikipedia org wiki Sieve of EratosthenesJavaScript 中的算法 基本上我只是按照以下步骤操作 创建从 2 到 n 1 的连续整数列表 令第一个素
  • 以编程方式填写reactjs表单

    我正在编写一个用户脚本 但无法填写由reactjs制作的表单 我的代码 document querySelector id username value email protected cdn cgi l email protection
  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • 如何更改 Google Maps v3 API for Directions 中的开始和结束标记图像

    我使用 DirectionsRender 绘制了一条路线 但我不知道如何用我自己的标记替换通用的 Google 标记 我知道并在正常的谷歌地图情况下使用它 但发现很难用开始和结束的方向标记来做到这一点 如果这是一个愚蠢的问题 感谢您的任何建
  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • 引导程序提前输入未填充承诺的响应

    我的引导程序预输入如下
  • 调整图像大小并将画布旋转 90 度

    这里有很多关于在 js 上使用画布旋转图像的主题 我阅读了其中的大部分内容 但无法找到解决我的问题的方法 我正在接收任何分辨率的图像 来自上传组件 我将其大小调整为 1024x768 如下所示 var canvas document cre
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • 在 JavaScript 循环之外声明变量可以提高速度和内存?

    C 也有类似的问题 但我们没有看到 JavaScript 的任何问题 在循环内声明变量是否可以接受 假设循环有 200 次迭代 使用样本 2 相对于样本 1 是否有性能要求 内存和速度 我们使用 jQuery 来循环 它提高了我们将 var
  • 在 Shopify 商店中嵌入 Vue 组件

    在产品页面中 我尝试显示自定义 Vue 组件 为简洁起见 该组件根据给定的产品 ID 显示 Firebase 数据库中的一些信息 我最初尝试将其制作为 Shopify 应用程序 以便我可以访问他们的 API 我实现了 OAuth 并且可以检
  • 如何用另一个响应替换窗口的 URL 哈希?

    我正在尝试使用替换方法更改哈希 URL document location hash 但它不起作用 function var anchor document location hash this returns me a string va
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • 如何确定所有角度2分量都已渲染?

    当所有 Angular2 组件完成渲染时 是否会触发一个角度事件 For jQuery 我们可以用 function 然而 对于 Angular2 当domready事件被触发 html 只包含角度组件标签 每个组件完成渲染后 domrea
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro
  • 如何使用asm.js进行测试和开发?

    最近我读到asm js规范 看起来很酷 但是是否有任何环境 工具来开发和测试这个工具 这还只是处于规范阶段吗 您可以尝试使用 emscripten 和 ASM JS 1 并从侧分支在 firefox 构建中运行它 有关 asm js 的链接

随机推荐

  • Outlook 中的网址中的双斜杠

    您的搜索页面的 URL 是这样构建的 http www example com results name John city Miami gender Male这将显示迈阿密所有名为约翰的男性 当其中一个过滤器留空时 网址将如下所示 htt
  • 获取视频文件的尺寸

    python 有没有办法获取视频文件或其他库的尺寸来实现这一点 相当于一个Media Info或者其他的东西 如果我理解正确的话 你指的是视频的分辨率 例如 768x432 这可以简单地使用 python 中的 opencv 来完成 imp
  • 在 XmlDocument 中加载 xml 文件时出错

    您好 我有下面的 xml 文件 我正在尝试使用下面的代码将其加载到 xml 文档中 XmlDocument Doc new XmlDocument Doc LoadXml C MappingFiles InputFile xml 但它抛出错
  • 如何从我的应用程序打开网页?

    我想让我的 WPF 应用程序打开默认浏览器并转到某个网页 我怎么做 对于 NET 桌面版本 System Diagnostics Process Start http www webpage com 对于 NET Core 默认为Proce
  • C++ 中的自定义事件?

    是否可以在 C 中创建自定义事件 例如 假设我有变量 X 和变量 Y 每当 X 发生变化时 我想执行一个将 Y 设置为 3X 的函数 有没有办法创建这样的触发器 事件 触发器在某些数据库中很常见 这基本上是观察者模式的一个实例 正如其他人提
  • Pandas groupby 和多索引

    pandas 是否有机会通过 MultiIndex 对数据进行分组 我的意思是不仅传递给 groupby 函数键 还传递键和值来预定义数据帧列 a np array foo foo foo bar bar foo foo dtype obj
  • 未找到数据源名称且未指定默认驱动程序

    我被要求将使用 MVP 模式的 WinForms 应用程序移植到网页上 除其他外 该应用程序将 CSV 文件上传到数据表 然后执行一些工作 CSV文件上传到服务器OK然后用下面的代码读取 string connectionString Dr
  • 在函数作用域末尾执行代码的简单方法[重复]

    这个问题在这里已经有答案了 在测试代 码中 我偶尔想设置 模拟一些全局变量 在测试 范围结束时我想恢复这些变量 例如 BOOST AUTO TEST CASE HttpClientCsrf std string csrfSave Http
  • 反序列化 PHP 会话数据

    我正在使用 CodeIgniter 3 x 和数据库会话驱动程序 我想访问data列那BLOB类型 这是我的 blob 数据 ci last regenerate i 1435420891 identity s 13 email prote
  • 匿名共享内存?

    是否有一种 POSIX y 方法来分配不与特定文件名绑定的共享内存 IE 仅通过 UNIX 域套接字传递 SCM RIGHTS 消息才能在进程之间共享内存 None
  • Asp.net 单元测试中缺少对 System.Web.Mvc 的引用?

    我最近为我的 Asp NET MVC 应用程序做了一些单元测试 或者我尝试这样做 它一直告诉我 类型 System Web Mvc Controller 是在未引用的程序集中定义的 您必须添加引用程序集 System Web Mvc 版本
  • 在 AJAX 请求期间显示微调框?

    展示旋转器的最佳方式是什么 我准备了一个 div id spinner 它在加载过程中应该是可见的 你使用 jQuery 吗 如果是这样你可以使用 ajaxStart 和 ajaxStop http docs jquery com Ajax
  • 迭代 String.prototype

    我知道for in循环可以帮助迭代对象 原型和集合的属性 事实是 我需要迭代String prototype 虽然console log String prototype 当我这样做时显示完整的原型 for var prop in Stri
  • 如何在 ASP.Net 应用程序中使用 HTTPS

    我想在 ASP NET Web 应用程序中使用 HTTPS 但仅限于 Login aspx 页面 如何才能做到这一点 首先获取或创建证书 获取 SecureWebPageModule 模块http www codeproject com A
  • Fluent nhibernate:如何映射具有类型为接口的属性的实体?

    我有一个像这样的实体 public class Employee public int ID get set public IAccountManager AccountManager get set 我还为 DefaultAccountM
  • WP8.1 HttpClient Stream 仅获取 65536 字节数据

    我正在尝试在 Windows 运行时为 win8 1 和 wp8 1 的 MediaElement 编写一个实时 flv 流解复用器 我已经完成了解复用代码 flv 文件可以正确解复用为 h264 和 aac 标签数据 当我尝试播放网络文件
  • Xcode 斯威夫特。如何在基于视图的 NSTableView 中以编程方式选择单元格

    我可以单击一个单元格并编辑其内容 但是 可以通过编程方式选择单元格 而不是单击 选择单元格 基本上为单元格焦点提供准备编辑的机会 StackOverflow 上有人问了关于 UITableView 的同样问题 给出的答案是 let inde
  • 如何从 Python 执行程序? os.system 由于路径中的空格而失败[重复]

    这个问题在这里已经有答案了 我有一个Python脚本需要执行外部程序 但由于某种原因失败了 如果我有以下脚本 import os os system C Temp a b c Notepad exe raw input 然后它失败并出现以下
  • 如何使用 GeoTools 创建具有纬度、经度和半径的圆?

    现在我有 Polygon circle geometryBuilder circle myLong myLat radiusInMeters 10 它创建 纬度 28 456306 长 16 292034 半径 500 一个具有巨大纬度和经
  • JavaScript 中用于格式化数字的正则表达式

    我需要使用 JavaScript 在网页上显示格式化的数字 我想对其进行格式化 以便在正确的位置有逗号 我该如何使用正则表达式来做到这一点 我已经得到这样的东西 myString myString replace d 3 g 1 然后意识到