我正在尝试使用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
.如何在不让 JavaScript 有机会随意插入斜杠的情况下使用 $1
样式的反向引用?
对第二个参数使用字符串:
result = line.replace( /(S+) <- (S+)/, "$1 = $2" );
.
正在发生的事情是第二个参数正在从RegExp
强制转换为String
,这会在替换中添加斜杠。
替换的第二个参数不是正则表达式,而是字符串。
你需要像这样使用它:
result = line.replace( /(S+) <- (S+)/, '$1 = $2' );