2017-08-02 3 views
-1

私はjavascriptのreplace関数の問題に直面しています。Javascript置換機能が検索パターンに含まれていないと機能しない?マーク

"demo text?for test".replace(new RegExp("text?for", 'g'), "text for"); 

リターン出力は「テストのためのデモテキスト」です。

私は何かが不足していると思いますが、わかりません。以下は

var replaceAll = function (targetString, search, replacement) { 
      return targetString.replace(new RegExp(search, 'g'), replacement); 
     }; 

replaceAll("This is my favorite video https://www.youtube.com/watch?v=n3MPiLq0fKc", "video https://www.youtube.com/watch?v=n3MPiLq0fKc", "http://d-d.co/4eDED") 

出力され、私は自分のアプリケーションで使用される私の関数である

+1

'?'は正規表現で特別な意味を持ちます。あなたはそのキャラクターをエスケープする必要があります。 – zzzzBov

答えて

1

あなたのコードは動作しますが、あなたが/で囲まれた文字列として正規表現を供給して、「これは私のお気に入りのビデオhttps://www.youtube.com/watch?v=n3MPiLq0fKcです」

var replaceAll = function(targetString, search, replacement) { 
 
    return targetString.replace(new RegExp(search, 'g'), replacement); 
 
}; 
 

 
console.log(replaceAll("This is my favorite video https://www.youtube.com/watch?v=n3MPiLq0fKc", /video https:\/\/www\.youtube\.com\/watch\?v=n3MPiLq0fKc/, "http://d-d.co/4eDED"))
:特殊文字を適切にこのように、エスケープ

+0

お返事ありがとうございます。置き換える前に、JavaScript関数を使用してエスケープ文字をテキストに追加できますか? –

+0

RegExp.escape = function { return s.replace(/ [ - ]/[\] {}]/g、 '\\ $ &'); }; –

関連する問題