Задача:
Поле для ввода метражного товара. [^0-9. и -(возврат)], после запятой не больше 2 знаков.
Пока решение такое: рабочее, но корявое
function check(input) {
var num = input.value.replace(/[^0-9.-]/g, '');//разрешенные знаки
var num_minus = num.replace(/.[-].*$/g, '');//минус в середине числа
num = num_minus;
var num_dec = num.match(/.*\.../g);//есть ли два знака
if(num_dec!=null){
input.value = num_dec;
} else {
input.value = num;
}
}
Вопросы:
1. Как записать регулярку в одну строку? В ответах находил варианты: /^(0|([1-9]\\d*?))(\\.\\d{1,2})?$/ ; /^\d+(?:,\d{1,2})?$/, но заставить их работать не смог.
2. Как в моем варианте гуманно убирать минус в середине числа, не съедая соседние цифры?
Заранее спасибо