我有一个字符串
var str = "__Definition:__ $x_0$ is an _ordinary point_ of the ODE $L[y] = 0$";
我想替换里面的所有下划线,$$
以便字符串变成
var str = "__Definition:__ $x\_0$ is an _ordinary point_ of the ODE $L[y] = 0$";
我怎样才能在javascript中做到这一点?
我有一个字符串
var str = "__Definition:__ $x_0$ is an _ordinary point_ of the ODE $L[y] = 0$";
我想替换里面的所有下划线,$$
以便字符串变成
var str = "__Definition:__ $x\_0$ is an _ordinary point_ of the ODE $L[y] = 0$";
我怎样才能在javascript中做到这一点?
这可以在单个正则表达式替换调用中完成:
var str = "__Definition:__ $x_0$ is an _ordinary point_ of the ODE $L[y] = 0$";
var repl = str.replace(/_(?!(?:(?:[^$]*\$){2})*[^$]*$)/g, '\\_');
console.log(repl);
解释:这意味着匹配下划线字符后跟偶数个$
符号。因此_
,两个$
标志之间将被匹配,而外部将不匹配(因为它们后面跟着偶数个$
标志)。
将正则表达式用于此类解析活动不是一个好主意,但是,如果您想要快速而肮脏
var replaced = str.replace(/\$([^$]+)\$/, function(m, g) {
return '$' + g.replace(/_/, '\\_') + '$';
});