我的字符串类似于
var query = "@id >= 4 OR @id2 < 6 AND @id3 >= 5 AND @name = foo "
现在我想用这个字符串来反转每个“相等”测试。 将'&gt; ='替换为'&lt;' ,'&lt;'通过'&gt; ='和'='by'!='。
我想要的结果:
var reverseQuery = "@id < 4 OR @id2 >= 6 AND @id3 < 5 AND @name != foo "
我们不能使用:
reverseQuery = query.replace(/>=/g, "<").replace(/</g, ">=").etc
因为结果是
@id >= 4 OR @id2 >= 6 AND @id3 >= 5 AND @name != foo
对吗?那么如何做得很好呢?
谢谢,
答案 0 :(得分:5)
使用单个替换与确定替换的回调函数。
query = query.replace(/(<=?|>=?|=|<>|!=)/g, function(m){
switch(m) {
case '<': return '>=';
case '>': return '<=';
case '<=': return '>';
case '>=':return '<';
case '=': return '!=';
case '<>': return '=';
case '!=': return '=';
}
});