Не силен я в регулярке. Да и очень редко использую. Тормозная она.
Как вот это выражение дополнить, чтобы кроме цифр, точки и запятой допускало бы еще и ведущие "+" (что не особо надо) и "-" (обязательно):
function isnumber(inp) {
inp.value = inp.value.replace(/[^\d,.]*/g, '')
.replace(/([,.])[,.]+/g, '$1')
.replace(/^[^\d]*(\d+([.,]\d{0,5})?).*$/g, '$1');
}