javascript - 字符串中棘手的多次替换

标签 javascript regex string

我的字符串是这样的

var query = "@id >= 4 OR @id2 < 6 AND @id3 >= 5 AND @name = foo "

现在我想对这个字符串做的是反转每个“相等”测试。 将“>=”替换为“<”,将“<”替换为“>=”,将“=”替换为“!=”。

我想要的结果:

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 

对吗?那么如何很好地做到这一点呢?

谢谢,

最佳答案

将单个替换与确定替换的回调函数一起使用。

query = query.replace(/(<=?|>=?|=|<>|!=)/g, function(m){
  switch(m) {
    case '<': return '>=';
    case '>': return '<=';
    case '<=': return '>';
    case '>=':return '<';
    case '=': return '!=';
    case '<>': return '=';
    case '!=': return '=';
  }
});

演示:http://jsfiddle.net/Guffa/s2xj5/

关于javascript - 字符串中棘手的多次替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11449638/

相关文章:

javascript - 正则表达式 允许的特殊字符中一次只能使用一个特殊字符 Javascript

php - HTTP PUT 请求 : Passing Parameters with File

Java Scanner.nextLine() 消耗换行符

java - :name, :othername, 的正则表达式:其他

python - 如果组在特定字符串之前或之后,则正则表达式捕获组

java - 巨大的字符串静态数组

c - Strtok(), 没有 token 匹配

javascript - 单击 div 后通过 jquery 更改 css

java - java中打印包含火鸡字符的字符串

javascript - 如何关闭 App Engine Channel API 中的控制台日志记录?