使用javascript将字符串转换为正则表达式

时间:2018-12-29 14:18:04

标签: javascript regex

我需要使用javascript将动态值从变量转换为正则表达式。这是我的代码,但是不起作用:

var text = 'I like Blue color, My car is Blue and the book is Blue.';
var oldcolor = 'Blue';
var newcolor = 'Green';

// Does not work:
var expression = new RegExp('/'+oldcolor+'/g');
console.log(text.replace(expression, newcolor));

// This works:
console.log(text.replace(/Blue/g, newcolor));

1 个答案:

答案 0 :(得分:0)

  

这里/将被转义,最终的正则表达式将如下所示   /\/blue\/g/,这是不希望的。 (检查下面的代码)

在这种情况下,您不需要此'/'+oldcolor+'/g',因为您将值本身用作完整的模式而不是模式的一部分,因此可以将其直接传递给RegExp对象。

并且标志在RegExp中以RegExp(pattern[, flags])的形式提供。 check here for syntax

var oldcolor = 'blue';

let reg = new RegExp('/'+oldcolor+'/g');

console.log(reg)

var text = 'I like Blue color, My car is Blue and the book is Blue.';
var oldcolor = 'Blue';
var newcolor = 'Green';
//Dont Work
var expression = new RegExp(oldcolor, 'g');
console.log(text.replace(expression, newcolor));
//Work
console.log(text.replace(/Blue/g, newcolor));

如果我有一个变量,需要将其与其他模式一起插入到正则表达式中的某个地方

var text = 'I like Blue123 color';
var oldcolor = 'Blue';
var newcolor = 'Green';
//Dont Work

let reg = `${oldcolor}\\d+`

var expression = new RegExp(reg, 'g');
console.log(text.replace(expression, newcolor));