从变量中创建的reg表达式在.replace()中不起作用

时间:2018-05-14 08:32:02

标签: javascript

我正在进行编码挑战,希望我们创建一个查找和替换句子中的单词的函数。我像这样定义了reg表达式

//"before" is the parameter with the word to be replaced
var regRep = '/'+before+'/gi';

我正在使用它

//"str" is the sentence to search and prepAfter" is a variable with the replacement word.
var newStr = str.replace(regRep, prepAfter);

返回newStr时,我会在没有任何修改的情况下获得原始str。我经历了console.log()我的每个变量和逻辑块,而replace()方法是唯一不能正常工作的东西。这是整个功能。

function myReplace(str, before, after) {
    var prepAfter = "";
    var caseCheck = before.charAt(0);
    var regRep = '/'+before+'/gi';

    if(caseCheck === caseCheck.toUpperCase()){
      var firstLetter = after.substr(0,1).toUpperCase();
      var wordLength = after.length -1;
      var remWord = after.substr(1,wordLength);

      prepAfter = firstLetter.concat(remWord);
    }
    else{ prepAfter = after; }

    var newStr = str.replace(regRep, prepAfter);

    return newStr;
}

我错过了什么?

1 个答案:

答案 0 :(得分:2)

var regRep = new RegExp(before, 'gi');

如果您将字符串传递给replace()(正如您所做的那样),它将查找实际的字符串。

注意:如果before在您的案例中只是一个单词,您可能甚至不需要正则表达式,只需将其传递给replace()即可。取决于你是否需要检查之前和之后的空格。