我想替换字符串中被空格包围的所有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'
答案 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'