第二个字符串匹配,分别把有前缀和没有前缀的放在两个数组里排序后,再合并。测试用例可以过,不知道有没有啥问题。

function reg(arr){     
    var len = arr.length,     
        key = arr[len-1];
    var myreg1 = new RegExp('^[a-z]+' + key,'i'),   //匹配有前缀的
        myreg2 = new RegExp('^' + key,i),           //匹配没有前缀的
        newArr1 = [],
        newArr2 = [];
      for(var i = 0;i < len-1;i++){
         if(myreg1.test(arr[i])){
           newArr1.push(arr[i]);
         }else if(myreg2.test(arr[i])){
                newArr2.push(arr[i]);
         }
      }
      newArr1.sort();
      newArr2.sort();
      var res = newArr2.concat(newArr1);
      console.log(res);  
}
      var test = ['ykit-config-yo','mykit','fekit','ykit-config-fekit','ykit','ykit'];     
      reg(test);