Для тех из вас, кто любит однострочник .
string.replace(/[^\d\.]/g, '').replace(/^\.*/, '').replace(/(\.\d{0,2})(.*)/, '$1');
Я использую этот код для ввода type = "text" и с AngularJS для активации при нажатии клавиш, но вы можете использовать jQuery, если хотите. Просто поместите этот код в функцию, которая каким-то образом активируется при нажатии клавиши.
Это позволяет только цифры, цифры + десятичные, цифры + десятичные + цифры.
КОД
YourString.replace(/[^\d\.]/g, '').replace(/^\.*/, '').replace(/(\.\d{0,2})(.*)/, '$1');
testOne = "kjlsgjkl983724658.346.326.326..36.346"
=> "983724658.34";
testTwo = ".....346...3246..364.3.64.2346......"
=> "346.";
testThree = "slfdkjghsf)_(*(&^&*%^&%$%$%^KJHKJHKJKJH3"
=> "3";
testFour = "622632463.23464236326324363"
=> "622632463.23";
Это было построено для валюты США, но его можно изменить, чтобы разрешить более двух десятичных знаков после первого десятичного знака, как показано ниже ...
ИЗМЕНЕННЫЙ КОД
YourString.replace(/[^\d\.]/g, '').replace(/^\.*/, '').replace(/(\.\d*)(.*)/, '$1');
testFour = "dfskj345346346.36424362jglkjsg....."
=> "345346346.36424362";
:)