可能性がある場合は、正規表現をif((!regex.test(sybol ....条件)と組み合わせる方法と、コードビューを失うことなくコードを短縮する方法を尋ねたいと思いました。また、 、ダッシュは最初に1つだけ、入力は1つだけにすることができ、ドットも同じです。
$( this ).bind( 'keypress', function( e ){
var code = e.keyCode || e.which;
var symbol = String.fromCharCode( code );
var regex = /[-0-9]|[\b]/;
var currVal = $( this ).val();
var insideInput = currVal.indexOf( '-' );
if( ( !regex.test( symbol ) && code != 37 && code != 39 && code != 46 ) ||
( code == 45 && insideInput == 0 ) || ( currVal.length != 0 && code == 45 ) ) {
e.preventDefault();
}
});