diff --git a/src/lib/clean_number.js b/src/lib/clean_number.js index dbedfe2e2a6..d36b08db3df 100644 --- a/src/lib/clean_number.js +++ b/src/lib/clean_number.js @@ -13,9 +13,8 @@ var isNumeric = require('fast-isnumeric'); var BADNUM = require('../constants/numerical').BADNUM; -// precompile these regex's for speed -var FRONTJUNK = /^['"%,$#\s']+/; -var ENDJUNK = /['"%,$#\s']+$/; +// precompile for speed +var JUNK = /^['"%,$#\s']+|[, ]|['"%,$#\s']+$/g; /** * cleanNumber: remove common leading and trailing cruft @@ -23,7 +22,7 @@ var ENDJUNK = /['"%,$#\s']+$/; */ module.exports = function cleanNumber(v) { if(typeof v === 'string') { - v = v.replace(FRONTJUNK, '').replace(ENDJUNK, ''); + v = v.replace(JUNK, ''); } if(isNumeric(v)) return Number(v); diff --git a/test/jasmine/tests/lib_test.js b/test/jasmine/tests/lib_test.js index ded7aa9d3df..562de0cee9d 100644 --- a/test/jasmine/tests/lib_test.js +++ b/test/jasmine/tests/lib_test.js @@ -1522,7 +1522,12 @@ describe('Test lib.js:', function() { ['-100.001', -100.001], [' $4.325 #%\t', 4.325], [' " #1" ', 1], - [' \'\n \r -9.2e7 \t\' ', -9.2e7] + [' \'\n \r -9.2e7 \t\' ', -9.2e7], + ['1,690,000', 1690000], + ['1 690 000', 1690000], + ['2 2', 22], + ['$5,162,000.00', 5162000], + [' $1,410,000.00 ', 1410000], ].forEach(function(v) { expect(Lib.cleanNumber(v[0])).toBe(v[1], v[0]); }); @@ -1531,7 +1536,7 @@ describe('Test lib.js:', function() { it('should not accept other objects or cruft in the middle', function() { [ NaN, Infinity, -Infinity, null, undefined, new Date(), '', - ' ', '\t', '2 2', '2%2', '2$2', {1: 2}, [1], ['1'], {}, [] + ' ', '\t', '2\t2', '2%2', '2$2', {1: 2}, [1], ['1'], {}, [] ].forEach(function(v) { expect(Lib.cleanNumber(v)).toBeUndefined(v); });