ruby (在 Rails 上)正则表达式 : removing thousands comma from numbers

标签 ruby regex ruby-on-rails-3

这看起来很简单,但我遗漏了一些东西。

我有大量来自各种来源和不同格式的输入。

数字输入

123
123.45
123,45 (note the comma used here to denote decimals)
1,234
1,234.56
12,345.67
12,345,67 (note the comma used here to denote decimals)

关于输入的附加信息

  • 数字永远小于 100 万
  • 编辑:这些是价格,因此要么是整数,要么是百分之一

我正在尝试编写一个正则表达式并使用 gsub 去除千位逗号。我该怎么做?

我写了一个正则表达式:myregex =/\d+(,)\d{3}/

当我在 Rubular 中测试它时,它表明它只在我想要的测试用例中捕获逗号。

但是当我运行 gsub 时,我得到一个空字符串:inputstr.gsub(myregex,"")

看起来 gsub 正在捕获所有内容,而不仅仅是 () 中的逗号。我哪里错了?

最佳答案

result = inputstr.gsub(/,(?=\d{3}\b)/, '')

仅当紧跟三个数字时才删除逗号。

(?=...) 是一个先行断言:它需要有可能在当前位置匹配,但它不会成为实际匹配的文本的一部分(以及随后替换)。

关于 ruby (在 Rails 上)正则表达式 : removing thousands comma from numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14613980/

相关文章:

javascript - 通过正则表达式拆分是重复参数 NodeJs

javascript - 非 PushState 浏览器中的 JQuery Mobile 查询字符串问题

ruby-on-rails - 使用 will_paginate 在 Ruby 中对数组进行分页

JavaScript 和 Rails 3

sql - 数据库日期时间值冲突

ruby-on-rails - 我应该制作一个单独的应用程序来向 RoR 应用程序中的 40-50k 用户发送推送通知还是使用后台作业

jquery - Rails 3.1 authenticity_token + uploadify

c# - 如何使用 RegEx 确定下一个允许使用的字符

mysql - 无法在 Win 2008R2 上安装 Redmine .. gem install activerecord-mysql-adapter 不工作

ruby-on-rails - Resque - 类的未定义方法 'perform'