Ruby(在Rails上)正则表达式:从数字中删除数千个逗号

big*_*ner 8 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)
Run Code Online (Sandbox Code Playgroud)

有关输入的其他信息

  • 数字总是不到100万
  • 编辑:这些是价格,所以要么是整数,要么是百分之一

我正在尝试编写一个正则表达式并使用gsub删除数千个逗号.我该怎么做呢?

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

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

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

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

Tim*_*ker 9

result = inputstr.gsub(/,(?=\d{3}\b)/, '')
Run Code Online (Sandbox Code Playgroud)

仅当正好跟随三个数字时才删除逗号.

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