Luc*_*cas 3 javascript regex string
我的字符串是这样的
var query = "@id >= 4 OR @id2 < 6 AND @id3 >= 5 AND @name = foo "
Run Code Online (Sandbox Code Playgroud)
现在我想用这个字符串来反转每个"相等"测试.将'> ='替换为'<','<'by'> =','='替换'!='.
我想要的结果:
var reverseQuery = "@id < 4 OR @id2 >= 6 AND @id3 < 5 AND @name != foo "
Run Code Online (Sandbox Code Playgroud)
我们不能使用:
reverseQuery = query.replace(/>=/g, "<").replace(/</g, ">=").etc
Run Code Online (Sandbox Code Playgroud)
因为这样的结果会是
@id >= 4 OR @id2 >= 6 AND @id3 >= 5 AND @name != foo
Run Code Online (Sandbox Code Playgroud)
对 ?那么如何做得很好呢?
谢谢,
使用单个替换与确定替换的回调函数.
query = query.replace(/(<=?|>=?|=|<>|!=)/g, function(m){
switch(m) {
case '<': return '>=';
case '>': return '<=';
case '<=': return '>';
case '>=':return '<';
case '=': return '!=';
case '<>': return '=';
case '!=': return '=';
}
});
Run Code Online (Sandbox Code Playgroud)
演示:http://jsfiddle.net/Guffa/s2xj5/
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |