2016-10-12 8 views
6

正しい文字列検索を実行し、JavaScriptでREGEXを絶対に使用しないで置き換えるにはどうすればよいですか?JavaScriptで「生の」文字列の検索と置換を行う方法REGEX

String.prototype.replace()の最初の引数が正規表現ではなく文字列であれば、それはリテラル置換を行います。完全に真実ではありません練習ショー:

"I am a string".replace('am', 'are') 
--> "I are a string" 

OK

"I am a string".replace('am', 'ar$e') 
--> "I ar$e a string" 

それでもOK

"I am a string".replace('am', 'ar$$e') 
--> "I ar$e a string" 

ないでOK!

二番目のドル記号はどこですか?それはREGEXからのマッチで置き換えるために$1のようなものを探しています...それは決して使用されませんでしたか?

私は非常に混乱し、どんなアイデアですか?

+0

二ドル記号があるため、[この](HTTPSを離れて食べられます://developer.mozilla .org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter)。 –

+0

質問が残っています、なぜ私は正規表現を最初に使用していないので、これらのクォークはアクティブですか?ただ私にはばかばかしいようだ。 –

+0

@TonyBogdanovそれは[15.5.4.11 String.prototype.replace(searchValue、replaceValue)]でそのように定義されているためです。(http://www.ecma-international.org/ecma-262/5.1/#sec-15.5.4.11 )。なぜapiがそのように設計されたのか知りたいのであれば、この決定に関わった人たちに質問する必要があります。しかし、正規表現を使用しない場合でも、正規表現を使用すると便利です。 '' test 1234 '.replace( "12"、 "$ &-");' –

答えて

4

あなたはreplace callbackではなく、文字列リテラルを使用している場合は、自動正規表現置換は行われません。

"I am a string".replace('am',() => 'ar$$e') 
+0

または代替: ''いくつかのTOKEN文字列」.split(' TOKEN ')。join() 'ar $$ e') ' –

関連する問題