re = /^-?((?:(?:\d{1,3})+)?(?:(?:([\s,])?\d{3}))?(?:(?:\2\d{3})+)?)([\-.,]\d{2})?(\srub\.?)?$/m
str = '-1000000.00
1000000.00
1000000.00 rub.
-1000000-00
1000000-00
1000000-00 rub.
-1000000,00
1000000,00
1000000,00 rub.
-1 000 000,00
1 000 000,00
1 000 000,00 rub.
-1,000,000.00
1,000,000.00
1,000,000.00 rub.
-1000000
1000000
1000000 rub
2.00 rub
4555.15
1 000,000 000-00'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html