Javascript正则表达式替换插入额外的斜杠

时间:2013-07-31 12:47:35

标签: javascript regex replace

我正在尝试使用JavaScript清理文件。该文件包含如下文本行:

a <- b + c / d;

我希望在<-的任意一侧有一个非空格字符串时,用=替换所有<-,用单个空格分隔。理论上很容易:

line = "a <- b + c / d"
result = line.replace( /(\S+) <- (\S+)/, /$1 = $2/ )

以上代码在运行时生成/a = b/ + c / d。但是,从概念上讲,它应该产生a = b + c / d。如何使用$1 - 样式的反向引用,而不允许JavaScript有机会插入斜杠?

2 个答案:

答案 0 :(得分:3)

使用字符串作为第二个参数:

result = line.replace( /(\S+) <- (\S+)/, "$1 = $2" );

正在发生的事情是第二个参数正在从RegExp强制转换为String,这会在替换中添加斜杠。

答案 1 :(得分:0)

替换的第二个参数不是正则表达式而是字符串。

您需要像这样使用它:

result  = line.replace( /(\S+) <- (\S+)/, '$1 = $2' );