使用正则表达式在javascript中替换字符串中的变量子字符串

时间:2014-03-29 01:12:39

标签: javascript regex

我想替换字符串中被空格包围的所有oldString,'。' ,'('或')'使用正则表达式。

var string = ' (y) .y   y  rye';
var oldsString = 'y';
var regex = new RegExp('([.()\s])('+oldString+')([.()\s])','g');
var newString = 'x';
string = string.replace(regex, '$1'+newString+'$3');

将正则表达式设置为

var regex = new RegExp('([\.\(\)\s])('+oldString+')([\.\(\)\s])','g'); 

根据这个网站,两种方法都应该有效: http://regex101.com/r/mM4xJ2 但是当我尝试节点中的代码时,它只将字符串设置为

' (x) .y   y  rye'

不是

' (x) .x   x  rye'

1 个答案:

答案 0 :(得分:1)

由于您使用变量将连接字符串编译为RegExp对象,因此需要双重转义:

var string = ' (y) .y   y  rye';
var oldString = 'y';
var regex = new RegExp('([.()\\s])('+oldString+')([.()\\s])','g');
var newString = 'x';
string = string.replace(regex, '$1'+newString+'$3');

这会正确返回:

' (x) .x   x  rye'