当搜索模式包含时,Javascript替换功能不起作用?标记

时间:2017-08-02 13:48:39

标签: javascript regex

我在javascript中遇到了替换功能的问题。

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

它的返回输出是“demo text?for test”。

我想,我错过了一些东西,但我不知道。

以下是我在我的应用程序中使用的函数

 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")

输出是“这是我最喜欢的视频https://www.youtube.com/watch?v=n3MPiLq0fKc

1 个答案:

答案 0 :(得分:1)

如果您将正则表达式作为/中包含的字符串提供并且正确转义了特殊字符,则代码可以正常工作,如下所示:

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"))