RegExp中的alias ls =“ls --color”?

时间:2014-02-25 04:15:42

标签: javascript regex

如何使用alias实现RegExp - 类似JavaScript的功能?

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 个答案:

答案 0 :(得分:2)

您的正则表达式不正确。 /^ls[$ ]/匹配ls后跟文字$或空格。 $ 不是字符类[]中的锚点。

您希望/^ls\b/,即ls后跟字边界:

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