2017-04-19 9 views
0

私はregex replaceを私が持っている正規表現で置き換えようとしています。私は、マッチメソッドを使用すると、適切なインデックスと一致を持つ配列を返しますが、置換文字列を使用して置換文字列を追加すると、それは動作しません。javascript regex matchは動作しますが、doesnt workを置き換えます。

var a = "$#,##0.00".match("[\\d+-,#;()\\.]+"); 
console.log(a); 

戻り値["#,##0.00", index: 1, input: "$#,##0.00"]。私はそれを返すことを期待するのに対し、

var b = "$#,##0.00".replace("[\\d+-,#;()\\.]+",""); 
console.log(b); 

戻り$#,##0.00はちょうど$

は、誰かが私が間違って何をやっていると指摘することはできますか?例のおかげ のリンクは次のとおりです。

var a = "$#,##0.00".match("[\\d+-,#;()\\.]+"); 
 
console.log(a); 
 
var b = "$#,##0.00".replace("[\\d+-,#;()\\.]+",""); 
 
console.log(b);

+0

あなたが '')(置き換える文字列を渡していますか? – adeneo

+0

はい、私の結果として$がほしいと空の文字列 – phantomsays

答えて

3

.matchは正規表現を受け付けます。したがって、文字列が提供されている場合、.matchは、new RegExpを使用して明示的に正規表現に変換します。

.replaceしかし、文字列(文字通り検索と見なされます)または正規表現の両方を受け入れる場合は、正規表現を使用するには正規表現を渡す必要があります。

var b = "$#,##0.00".replace(new RegExp("[\\d+-,#;()\\.]+"), ""); 
//       ^^^^^^^^^^^    ^

またはリテラル正規表現を使用して:

var b = "$#,##0.00".replace(/[\d+-,#;()\.]+/, ""); 
+0

ohh!私はそれを知らなかった、私は、デフォルトでは置き換えを消費する置き換えを考えた。 – phantomsays

+1

+1を指してくれてありがとう、ちょうど別の可能な方法を指しています:var a = "$#、## 0.00"; var b = a.replace(a.match( "[\\ d + - 、#;()\\。] +")、 ""); a.match(...)は文字列になるため、動作します – repeatdomiau

+0

@GabrielMilitelloアメリカから日本へ行く最速の方法は、大洋を越えているのですか? :D。 –

関連する問題