2016-03-30 2 views
0

このスクリプトは、私にとって完璧なソリューションであり、数をフォーマットするために別のプラグインをインストールする必要はありません。正規表現を変更して負の数を許可する

$(document).on('keyup', "#importo", function (event) { 

// skip for arrow keys 
if (event.which >= 37 && event.which <= 40) return; 

// format number 
$(this).val(function (index, value) { 
    return value 
     .replace(/\D/g, '') 
     .replace(/\B(?=(\d{3})+(?!\d))/g, ".") 
     ; 
    }); 
}); 

今私は負の数を許可するスクリプトが必要です。どうすれば変更できますか?

+0

これを追加することができます。^ \ - ?[1-9] –

答えて

1

たぶん、あなたはこのような何かを探しています:最初のそれは単語の先頭に数字とハイフン以外のすべてを置き換える置き換えるには

return value 
    .replace(/(?!^-)[^0-9]/g, "") 
    .replace(/\B(?=(\d{3})+(?!\d))/g, ".") 
    ; 

。それがあなたの場合にするかどうかは分かりません。

+0

これにより、数字の途中にハイフンを使用できます。 –

+0

ああ、あなたが正しいです、私はそれを編集しました、今、それは必要に応じて動作するはずです。 –

0

Javascriptの正規表現はlookbehindsをサポートしていないので、これは私が考えることができる最も簡単な変更だと思います。

$(this).val(function (index, value) { 
    if (value.length === 1) { 
     value = value.replace(/\D/, ''); 
    } else if (value.length > 1) { 
     value = value[0].replace(/[^-\d]/, '') + value.slice(1).replace(/\D/g, ''); 
    } 

    return value.replace(/\B(?=(\d{3})+(?!\d))/g, "."); 
}); 
0

これはあなたが探しているものに近いと思います。私は数字/数字だけを許可する正規表現を書いたが、負の数も許す。 JSマッチメソッドを値に使用します。戻り値は配列なので、ゼロインデックスから結果を取得する必要があります。

$(document).on('keyup', "#importo", function (event) { 

// skip for arrow keys 
if (event.which >= 37 && event.which <= 40) return; 

// format number 
$(this).val(function (index, value) { 
    var digits = value.match(/(^-\d*)|(\d*)/g); // allows digits starting with - or just digits only. 
    return digits[0]; 
    }); 
}); 
0

正規表現はまた、負の符号-を処理する必要があります。試してください:

$(this).val(function (index, value) { 
    if (value.length === 1) { 
     value = value.replace(/\D/, ''); 
    } else if (value.length > 1) { 
     value = value[0].replace(/[^-\d]/, '') + value.slice(1).replace(/\D/g, ''); 
    } 

    return value.replace(/\B(?=((?:-)?(?:\d{3})+)(?!\d))/g, "."); 

});

関連する問題