数値と小数点以外のすべてを置き換える正規表現


113

テキストまたは小数のみを残す必要があるテキストフィールドがあります。以下は、数値と小数点以外のすべてを置き換えるために現在使用しているコードです。問題は、他のすべてを識別する正規表現を理解できないことです

document.getElementById(target).value = newVal.replace(/\D[^\.]/g, "");

\ Dは正常に動作しますが、私は試しまし(?!.), (?!\.), [^.], [^\.]た...

数値または小数以外のもので明確に識別する正規表現の提案はありますか?

助けてくれてありがとう


:ケースであなたは、実際の数値ではなく、数値の桁数をチェックするために探しているstackoverflow.com/questions/42328875/...
cregox

回答:


239

これを使って:

document.getElementById(target).value = newVal.replace(/[^0-9.]/g, "");

1
@Hugoこれは何も許可しません。小数点を含む可能性のある文字列を渡して、最初に前処理しないでください。それは、文字列がすべての文字を許可すると言っているようなものです...
jave.web

3
次に、戻り値をparseFloatで実行します。追加の小数点が削除されます。例parseFloat("46554.4655465.54654.545345.5") = 46554.4655465
Simon

1
これは、お金などのフォーマット済みの数値を計算可能な浮動小数点数に変換するのに最適です。
lu1s 2017年

8

小数部分のみを削除するには、次のようにします。

number.replace(/(\.\d+)+/,'');

これにより、13.6667pxは13pxに変換されます(単位pxはそのままにします)。


7

これを試して:

document.getElementById(target).value = newVal.replace(/^\d+(\.\d{0,2})?$/, "");


2
ベストアンサー。0.000 10.000000 .22 2.234を削除しますが、1、10、10.1、10.22は保持します
Robert Baker

この表現は複雑に見えますが、それがどのように機能するのか、または正確に何が削除されるのかを説明できますか?
ミンデロフ2016

これは、「5.12руб」などのキリル文字入力では機能しません。
ミンデロフ2016

4
"11111" .replace(/ ^ \ d +(\。\ d {0,2})?$ /、 "")-結果の空の文字列
yAnTar

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.