Most of this information is available on the net. I have compiled into a single document for easy reading.
JavaScript code is after the descriptions.
isInteger: function (value) {
var expression = /^[0-9]+$/;
return (expression.test(value));
},
isNumber: function (value) { //integer and floats both
//var expression = /^[0-9]*\.?[0-9]/;
//return (expression.test(value));
return (!isNaN(value));
},
isPercentage: function (value) {
// cannot be greater than 100
// 15., 15.000, 100.01 is not valid,
// 15.0, 15.00, 100, 100.0, 100.00 is valid,
if (value == "" || value == 'undefined' || !number.isNumber(value))
return false;
var re = /^((0|[1-9]\d?)(\.\d{1,2})?|100(\.00?)?)$/;
return re.test(value);
},
formatNumeric: function (inputNumber, precision) {
var blnNeg = false;
var strReturn = '';
if (precision == null || precision == 'undefined') precision = 0;
if (number.isNumber(inputNum))
inputNum = parseFloat(inputNum).toFixed(precision);
else
inputNum = '';
var num = '' + inputNum;
if (num == '') return '';
/*
// First check for decimal point.
if(num.indexOf(".") == -1) {
var strLeft = new String(num.substring(0, num.length));
var strRight = "00000000000000000000000".substring(0,precision);
}
else {
// Decimal point exists, separate right and left
pos = num.indexOf(".");
var strLeft = num.substring(0, pos);
if (strLeft == "") strLeft = "0";
var strRight = num.substring(pos+1);
// Correct precision to the desired level.
// Adding zeros, or truncating where necessary
strRight += '0000000000000000000000';
strRight = strRight.substring(0,precision);
}
*/
//Puled the following 4 lines out of the above else
pos = num.indexOf(".");
var strLeft = num.substring(0, pos);
if (strLeft == "") strLeft = "0";
var strRight = num.substring(pos + 1);
// Add commas to the left side.
var ctr = 0;
var strTmp = "";
for (var i = strLeft.length - 1; i >= 0; i--) {
ctr += 1;
if (ctr == 4) {
strTmp += "," + strLeft.charAt(i);
ctr = 1;
}
else
strTmp += strLeft.charAt(i);
}
strLeft = "";
for (var i = strTmp.length - 1; i >= 0; i--) {
strLeft += strTmp.charAt(i);
}
//Taking care of - at first place and , following it
if (strLeft.indexOf("-,") != -1 || strLeft.indexOf("-") != -1) {
blnNeg = true;
strLeft = strLeft.replace("-,", "(");
strLeft = strLeft.replace("-", "(");
}
if (precision == 0) strReturn = strLeft;
else strReturn = strLeft + '.' + strRight
if (blnNeg == true) strReturn += ")";
return strReturn;
}
};
JavaScript code is after the descriptions.
Is Integer
var isInteger = number.isInteger(value);Is Number - including decimal
var isNumber = number.isNumber(value);Is Percentage
var isPercentage = number.isPercentage(value);Format Numeric
var num = number.formatNumeric(inputNumber, precision)- inputNumber: value
- precision: decimal places
Number.js
var number = {isInteger: function (value) {
var expression = /^[0-9]+$/;
return (expression.test(value));
},
isNumber: function (value) { //integer and floats both
//var expression = /^[0-9]*\.?[0-9]/;
//return (expression.test(value));
return (!isNaN(value));
},
isPercentage: function (value) {
// cannot be greater than 100
// 15., 15.000, 100.01 is not valid,
// 15.0, 15.00, 100, 100.0, 100.00 is valid,
if (value == "" || value == 'undefined' || !number.isNumber(value))
return false;
var re = /^((0|[1-9]\d?)(\.\d{1,2})?|100(\.00?)?)$/;
return re.test(value);
},
formatNumeric: function (inputNumber, precision) {
var blnNeg = false;
var strReturn = '';
if (precision == null || precision == 'undefined') precision = 0;
if (number.isNumber(inputNum))
inputNum = parseFloat(inputNum).toFixed(precision);
else
inputNum = '';
var num = '' + inputNum;
if (num == '') return '';
/*
// First check for decimal point.
if(num.indexOf(".") == -1) {
var strLeft = new String(num.substring(0, num.length));
var strRight = "00000000000000000000000".substring(0,precision);
}
else {
// Decimal point exists, separate right and left
pos = num.indexOf(".");
var strLeft = num.substring(0, pos);
if (strLeft == "") strLeft = "0";
var strRight = num.substring(pos+1);
// Correct precision to the desired level.
// Adding zeros, or truncating where necessary
strRight += '0000000000000000000000';
strRight = strRight.substring(0,precision);
}
*/
//Puled the following 4 lines out of the above else
pos = num.indexOf(".");
var strLeft = num.substring(0, pos);
if (strLeft == "") strLeft = "0";
var strRight = num.substring(pos + 1);
// Add commas to the left side.
var ctr = 0;
var strTmp = "";
for (var i = strLeft.length - 1; i >= 0; i--) {
ctr += 1;
if (ctr == 4) {
strTmp += "," + strLeft.charAt(i);
ctr = 1;
}
else
strTmp += strLeft.charAt(i);
}
strLeft = "";
for (var i = strTmp.length - 1; i >= 0; i--) {
strLeft += strTmp.charAt(i);
}
//Taking care of - at first place and , following it
if (strLeft.indexOf("-,") != -1 || strLeft.indexOf("-") != -1) {
blnNeg = true;
strLeft = strLeft.replace("-,", "(");
strLeft = strLeft.replace("-", "(");
}
if (precision == 0) strReturn = strLeft;
else strReturn = strLeft + '.' + strRight
if (blnNeg == true) strReturn += ")";
return strReturn;
}
};