Вы можете использовать следующий код:
var r;
if(allow_float){
r=/^\$?\d[\d,\.\W]+$/;
} else {
r = /^\$?\d[\d,\W]+$/;
}
return r.test(text);
РЕДАКТИРОВАТЬ : отклонить один $
.
(без выхода) ^
и $
символы соответствуют началу и строке соответственно.Следовательно, он вернет true
, только если он соответствует всей строке .
Кстати, ваше регулярное выражение очень либерально;он соответствует строкам вроде $1!2@3#4$5%6^7&8*9(0),.1,.4
.
Я рекомендую использовать встроенные в Javascript методы синтаксического анализа чисел, например:
function __numberBox__correctFormat(text,allowFloat){
if (text.charAt(0) === '$')
text = text.substring(1);
return (allowFloat ? parseFloat : parseInt)(text.replace(',', ''), 10);
}
Без троичной хитрости это будет выглядеть так:
text = text.replace(',', '');
if(allowFloat)
return parseFloat(text);
return parseInt(text, 10);