2013-04-09 34 views
3

我有一個字符串可以說C1 AND C2 OR C3 ([email protected]#$%) AND C4 OR C5 ,說我的輸入C3 然後我想刪除的垃圾/使用正則表達式C3和未來運營商之間AND|OR數據。字符串操作使用正則表達式

因此,對於上面的字符串,我想作爲C1 AND C2 OR C3 AND C4 OR C5

+1

是垃圾數據總是用括號括起來?此外,你到目前爲止嘗試過什麼? – 2013-04-09 15:10:08

+0

'不''它可以是任何東西前'C1和C2或C3〜!@#$%()()()()###和C4或C5' – Kumar 2013-04-09 15:11:50

+0

也需要提供輸入C1/C2/C3 ....)作爲輸入可以是C2 ..其中沒有任何垃圾..那麼我不應該刪除垃圾後C3 – Kumar 2013-04-09 15:14:24

回答

0

輸出試試這個:

var str = 'C1 AND C2 OR C3 ([email protected]#$%) AND C4 OR C5' 
var input = 'C3' 
console.log(str.replace(new RegExp("(" + input + ").*?(AND|OR)"), "$1$2")) 
+0

這是非常具體的輸入字符串並且在所有情況下都不起作用。 – 2013-04-09 15:19:41

+0

雅我需要通用溶膠 – Kumar 2013-04-09 15:24:28

+0

你將不得不C3取代你的輸入。 – mrks 2013-04-09 15:27:35

0
function purgeJunk(variable, expression) { 
    return expression.replace(purgeJunk.regexp, function(match, digits, operator) { 
     if (digits != variable) return match; 
     return "C" + digits + " " + operator; 
    }); 
}; 

function purgeAllJunk(expression) { 
    return expression.replace(purgeJunk.regexp, function(match, digits, operator) { 
     return "C" + digits + " " + operator; 
    }); 
}; 

purgeJunk.regexp = /C(\d+) .*?(AND|OR)/g; 

// delete junk after C2 
purgeJunk(2, "C1 AND C2 OR C3 ([email protected]#$%) AND C4 OR C5") 
    == "C1 AND C2 OR C3 ([email protected]#$%) AND C4 OR C5" 

// delete junk after C3 
purgeJunk(3, "C1 AND C2 OR C3 ([email protected]#$%) AND C4 OR C5") 
    == "C1 AND C2 OR C3 AND C4 OR C5" 

// delete all junk 
purgeAllJunk("C1 # AND C2 OR C3 [email protected]#$%()()()() ### AND C4 more garbage OR C5") 
    == "C1 AND C2 OR C3 AND C4 OR C5" 
相關問題