使用正则表达式替换数组中的匹配元素:无效字符

时间:2015-06-23 13:39:04

标签: javascript

var input = [paul, Paula, george];
  var newReg = \paula?\i
for(var text in input) {
    if (newReg.test(text) == true) {
         input[input.indexOf(text)] = george
       }
    }

console.log(input)

我不知道我的代码有什么问题。它应该改变paul和Paula到乔治,但当我运行它时,它说有一个非法的角色

2 个答案:

答案 0 :(得分:0)

反斜杠(\)是Javascript中的转义字符(以及许多其他类C语言)。这意味着当Javascript遇到反斜杠时,它会尝试转义以下字符。例如,\ n是换行符(而不是反斜杠后跟字母n)。

那么,那就是导致错误的原因,您需要将\paula?\i替换为/paula?/i

答案 1 :(得分:0)

您需要在正则表达式模式中将\替换为/

您应该将字符串包装在引号"

你需要正确匹配你的数组,val只是单词的索引,而不是单词本身。

var input = ["paul", "Paula", "george"];
var newReg = /paula?/i;
for (var val in input) {
    if (newReg.test(input[val]) == true) {
         input[input.indexOf(input[val])] = "george";
    }
}
console.log(input);

JSFIDDLE