Я думаю, что вы значительно усложняете регулярное выражение. Этого должно быть много:
^-?d+(,dd)?$
^
Начало строки,-?
Дополнительный знак минус,d+
Вслед за кучей цифр,(,dd)?
За ним следуют запятая и 2 цифры, которые являются 3 необязательными.
(альтернатива:(,d{2})?
)$
Конец линии.
var regex = /^-?d+(,dd)?$/;
console.log(regex.test('0,25'));
console.log(regex.test('-175,33'));
console.log(regex.test('15555555555555,99'));
console.log(regex.test('9,999'));
console.log(regex.test('15.03'));
console.log(regex.test('77,77,77'));
Там у вас есть регулярное выражение для проверки входного значения.
Теперь этот блок кода можно заменить следующим:
$("input[name*='TB_mytbx']").on('keypress', function (event) {
var regex = /^-?d+(,dd)?$/;
var value = $(this).val(); // Use the field's value, instead of the pressed key.
if (!regex.test(value)) {
event.preventDefault();
return false;
}
});