Vorsicht mit pattern.test()

Wenn du das mal in der Konsole testest, wirst du merken, das ist nicht, was du erwartest:

pattern = new RegExp("bl", "gi");
pattern.test("blau"); // -> true
pattern.test("blau"); // -> false
pattern.test("blau"); // -> true

Es wechselt sich also immer ab. Das ist scheisse und ich weiss selber nicht genau, wer auf die Idee kam, das in JS so umzusetzen…

Nimm stattdessen das, was ich hier eingefügt habe.

Ausserdem hast du da noch etwas komische Sachen gemacht, z.B. das ganze in ein Underscore-Objekt gewrappt (_(…)). Das kann Probleme geben.
Gib leeres Array, nicht Objekt zurück

Wenn die Suche nichts findet, soll ein leeres Array zurückgegeben werden, nicht die Collection. Damit funktioniert das gleich wie wenn Resultate zurückgegeben würden: dort gibt's auch einen Array, der aber gefüllt ist mit Models:

[model1, model2, model3]