Показать сообщение отдельно
  #1 (permalink)  
Старый 07.04.2017, 17:50
Bab Bab вне форума
Интересующийся
Отправить личное сообщение для Bab Посмотреть профиль Найти все сообщения от Bab
 
Регистрация: 07.04.2017
Сообщений: 10

Регулярка для поля ввода числа
Задача:
Поле для ввода метражного товара. [^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. Как в моем варианте гуманно убирать минус в середине числа, не съедая соседние цифры?

Заранее спасибо
Ответить с цитированием