From 8773d988342d2df53ce070d21b4e6eb885acf7d6 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Wed, 25 Jun 2008 20:37:29 +0000 Subject: [PATCH] Adding OL.String.isNumeric method to test for numeric strings. r=crschmidt (closes #1441) git-svn-id: http://svn.openlayers.org/trunk/openlayers@7451 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/BaseTypes.js | 25 +++++++++++++++++++++++++ tests/BaseTypes.html | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) diff --git a/lib/OpenLayers/BaseTypes.js b/lib/OpenLayers/BaseTypes.js index b9e2cbc054..ae48f1517c 100644 --- a/lib/OpenLayers/BaseTypes.js +++ b/lib/OpenLayers/BaseTypes.js @@ -134,6 +134,31 @@ OpenLayers.String = { } } return tokens.join(""); + }, + + /** + * Property: OpenLayers.String.numberRegEx + * Used to test strings as numbers. + */ + numberRegEx: /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/, + + /** + * APIFunction: OpenLayers.String.isNumeric + * Determine whether a string contains only a numeric value. + * + * Examples: + * (code) + * OpenLayers.String.isNumeric("6.02e23") // true + * OpenLayers.String.isNumeric("12 dozen") // false + * OpenLayers.String.isNumeric("4") // true + * OpenLayers.String.isNumeric(" 4 ") // false + * (end) + * + * Returns: + * {Boolean} String contains only a number. + */ + isNumeric: function(value) { + return OpenLayers.String.numberRegEx.test(value); } }; diff --git a/tests/BaseTypes.html b/tests/BaseTypes.html index 46d7ba5882..5d6e8e2c92 100644 --- a/tests/BaseTypes.html +++ b/tests/BaseTypes.html @@ -141,6 +141,43 @@ ); } + + function test_String_isNumeric(t) { + var cases = [ + {value: "3", expect: true}, + {value: "+3", expect: true}, + {value: "-3", expect: true}, + {value: "3.0", expect: true}, + {value: "+3.0", expect: true}, + {value: "-3.0", expect: true}, + {value: "6.02e23", expect: true}, + {value: "+1.0e-100", expect: true}, + {value: "-1.0e+100", expect: true}, + {value: "1E100", expect: true}, + {value: null, expect: false}, + {value: true, expect: false}, + {value: false, expect: false}, + {value: undefined, expect: false}, + {value: "", expect: false}, + {value: "3 ", expect: false}, + {value: " 3", expect: false}, + {value: "1e", expect: false}, + {value: "1+e", expect: false}, + {value: "1-e", expect: false} + ]; + t.plan(cases.length); + + var func = OpenLayers.String.isNumeric; + var obj, val, got, exp; + for(var i=0; i