JavaScript 用数组元素替换正则表达式



试图用数组的元素替换括号 [ ] 内的所有内容。例:

function replacingText(){
var names = ["Cole", "Kyle", "Chase"];
var sentance = 'This is [Cole].'
var regex = "[(.*?)]/gm";
console.log(sentance.replace(regex, names[1])); 
}

所以输出应该是"这是凯尔",而不是"这是[科尔]。

唯一需要修复的是正则表达式字符串需要

var regex = /[(.*?)]/gm;

末尾的/gm 只是表示它不会停在它找到的第一个,"m"代表多行匹配。

javascript 字符串替换可以接受字符串和正则表达式作为第一个参数。请参阅此处提供的示例。

在您的情况下,您将第一个作为正则表达式的字符串传递:"[(.*?)]"

相反,您应该匹配确切的字符串sentence.replace("[Cole]", names[1])或者,您可能想要的是使用正则表达式来匹配任何名称sentence.replace(/[.+]/g, names[1])(请注意,第一个参数不包含任何引号(

/g(全局(用于匹配句子中的所有匹配项。否则,只会替换第一个匹配项。

你能试试这个:

function replacingText() {
var names = ["Cole", "Kyle", "Chase"];
var sentance = "This is [Cole] [ahmed]";
var regex = /[([0-9]|[aA-zZ])*]/g;
console.log(sentance.replace(regex, names[1]));
}

我刚刚尝试过,它按预期工作

最新更新