В чем проблема с этим регулярным выражением при использовании глобального флага и флага, нечувствительного к регистру? Запрос - это пользовательский ввод. Результат должен быть [true, true].
var query = 'Foo B';
var re = new RegExp(query, 'gi');
var result = [];
result.push(re.test('Foo Bar'));
result.push(re.test('Foo Bar'));
// result will be [true, false]
var reg = /^a$/g;
for(i = 0; i++ < 10;)
console.log(reg.test("a"));