Я на днях для интереса писал функцию, которая достаёт из строки число.
function parseNumber(obj) {
obj = (obj + "").match(/[e\.0-9-]+/gi) || [];
for (var i = 0; i < obj.length; i++)
if (/^-?(?:\d?\.)?\d+(?:e-?\d+)?$/i.test(obj[i]))
return +obj[i];
return null;
}
Успешно парсит знак "-" перед числом, десятичную точку и экспоненту (числа вида 17E3 т.е. 17000).
Набросок кода для использования этой ф-ции:
var num = parseNumber(this.value);
if (num === null)
this.value = "";
else
this.value = num;