2016-05-27 12 views
0

数値が入力された場所のぼかし入力に書式を指定しようとしています。だから私が入力する場合:1234と入力のぼかし、入力はこの形式を取る:1.234。 私はこれをこの正規表現 /(\d)(?=(\d{3})+(?!\d))/gで動作させ、これは文字列値$1.を置き換えます。このように:Javascript小数点を含めてテキストを千にフォーマットする正規表現

value.replace(this._mask.regex, this._mask.replaceString) 

...小数点以下桁まで

私が1234,9999と入力すると、1.234,9.999が得られます。私は正規表現の初心者です。コンマの後に値を書式化しないように、既存の正規表現に何かを追加したいと思います。

+0

'value.replace(/(\ d *)(\ d {3})$ /、" $ 1. $ 2 ")' – Tushar

+0

「1000」未満の数値はどうですか? – Tushar

+1

'Number#toLocaleString'を試してみてください。 regxpで数字をフォーマットしようとするのは愚かなことです。 –

答えて

3

toLocaleStringを使用してください。

console.log(1234.5678.toLocaleString("en-us", {maximumFractionDigits: 10})); 
 
console.log(1234.5678.toLocaleString("de"));

あなたの入力は、あなたが文字列の入力はあなたを与えるだろうNumber#toLocaleStringなく、デフォルトObject#toLocaleStringを取得していることを確認行うには、その後、入力フィールドから来ている場合:

Number(input.value).toLocaleString(...) 
+0

フォーマットするためにregexpを使わないようにする良い提案!ありがとうございました。できます! –

関連する問題