2014-02-25 76 views
1

如何在JavaScript中使用alias類似的功能RegExpalias ls =「ls --color」在RegExp中?

ALIAS = [{pattern: /^ls[$ ]/, replace: 'ls --color '}] 
s = 'ls /' 
alias = function(t) { 
    for (var i = 0; i < ALIAS.length; i++) { 
     t = t.replace(ALIAS[i].pattern, ALIAS[i].replace) 
    } 
    return t 
} 
console.log(alias('ls')) 
console.log(alias('ls /')) 
console.log(alias('lsusb')) 
console.log(alias('lsCPU')) 

不正確的輸出:

~ ls 
~ ls --color/
~ lsusb 
~ lsCPU 

預期輸出:

~ ls --color 
~ ls --color/
~ lsusb 
~ lsCPU 
+1

什麼是預期的輸出? – thefourtheye

回答

2

你的正則表達式是不正確。 /^ls[$ ]/匹配ls後面緊跟文字$或空格。 $而不是字符類內的錨,[]

你想/^ls\b/,就是ls後跟一個字邊界:

ALIAS = [{pattern: /^ls\b/, replace: 'ls --color'}]