我有一个字符串
var str = "__Definition:__ $x_0$ is an _ordinary point_ of the ODE $L[y] = 0$";
我想替换$$
中的所有下划线,以便字符串becomse
var str = "__Definition:__ $x\_0$ is an _ordinary point_ of the ODE $L[y] = 0$";
我怎样才能在javascript中执行此操作?
答案 0 :(得分:2)
这可以在单个正则表达式替换调用中完成:
var str = "__Definition:__ $x_0$ is an _ordinary point_ of the ODE $L[y] = 0$";
var repl = str.replace(/_(?!(?:(?:[^$]*\$){2})*[^$]*$)/g, '\\_');
console.log(repl);
说明:表示匹配下划线字符NOT后跟偶数$
个符号。因此,_
之间的$
符号将被匹配,而且外部将不会匹配(因为这些符号会跟随偶数个$
符号)。
答案 1 :(得分:0)
使用正则表达式进行此类解析活动并不是一个好主意,但是,如果您想要快速和脏的话
var replaced = str.replace(/\$([^$]+)\$/, function(m, g) {
return '$' + g.replace(/_/, '\\_') + '$';
});