JavaScriptを使用して、文字列内の0〜9以外のすべての文字を置き換えたいと思います。Javascript regex、数字以外のすべての文字を置換する
なぜこの正規表現は機能しませんか?あなたはごと出現交換する/g
修飾子必要
"a100.dfwe".replace(/([^0-9])+/i, "")
JavaScriptを使用して、文字列内の0〜9以外のすべての文字を置き換えたいと思います。Javascript regex、数字以外のすべての文字を置換する
なぜこの正規表現は機能しませんか?あなたはごと出現交換する/g
修飾子必要
"a100.dfwe".replace(/([^0-9])+/i, "")
:
"a100.dfwe".replace(/[^0-9]+/g, "");
を私はまた、冗長i
修飾子を削除し、未使用の撮影部分式はあなたのためにブレース。他の人が指摘したように、あなたはまた、さらにそれを短くする\D
を使用することができます。
"a100.dfwe".replace(/\D+/g, "");
それが原因で文字クラス[^0-9]
動作しません(=反復修飾子+
の数字以外の文字は、 "aaa"などの非数字文字の1つのシーケンスにのみ一致します。あなたの目的のために
、他の人が提案として(グローバルすべてのマッチを置き換えるために)/g
修飾子を使用して、あなたはまたにつながるれ、代わりに[^0-9]
の事前定義された文字クラス\D
(=数字ではなく)を使用することができますより簡潔な正規表現/\D+/
。
より良いことを理解する "a"と ".dfwe"は+グループの下に来てはなりません。なぜならそれは1以上であるからです。 –
'\ D +'は "1つ以上の非数字"を表示しますが、 '(\ D)+'はあなたが望むものではない(同じ)非数字の1つ以上の繰り返しを探します。 ここでは、 '/ \ D/g'(1桁の数字以外のすべての数字を置き換えます)、'/\ D +/g'(数字以外のすべての数字を置き換えます)何千もの文字列を処理しない限り目立たないでしょう。 – fanaugen
ああ、ありがとう。それは私に事を完全に説明します。ありがとう! –
負の数値はどうですか:
負の数がない限り、Andy Eの例を使用します。それから、 ' - '記号も取り除かれ、常に正の数(あなたは大丈夫かもしれません)を残します。しかし、あなたが0未満の数を維持したい場合、私は次のことを示唆している:
"a-100.dfwe".replace(/(?!-)[^0-9.]/g, "") //equals -100
しかし、これはすべてを残しているので、注意してください「 - 」記号を、あなたのテキストは「-A-のように見える場合にエラーを与えます100.dfwe "
彼は実際に数字について話すのではなく、数字のグループだけです。とにかく正規表現は文字列の先頭にないので、 '-'とマッチします。 –
@ user3324764の答えに基づいて - プロトタイプ関数を作成し、数値を数値に変換します。
String.prototype.extractNumber = function()
{
return Number(this.replace(/(?!-)[^0-9.]/g, ""));
};
例:
"123.456px".extractNumber(); // 123.456
はあなたに感謝し、 "+" は、のために正確に何を立つのでしょうか? –
@PrakashRaman:これは*上記の文字のうちの1つ以上と一致することを意味します*。それは必要ではありませんが、必要な置換の数を減らすことによって正規表現のパフォーマンスを少し向上させます。 –
(技術的にはこの答えは質問に答えますが、浮動小数点では失敗します) "123.456px" .replace(/ \ D +/g、 ""); - > 123456 –