1

I have a simple filter function in my javascript, based on an input box.

function filter(selector, query) {
query   =   $.trim(query); //trim white space
query = query.replace(/ /gi, '|'); //add OR for regex 

$(selector).each(function() {
($(this).text().search(new RegExp(query, "i")) < 0) ? (do something here)

So, if I have a table with a list of words, eg.

Alpha Centauri,
Beta Carbonate,
Charly Brown,
...

and I enter 'alpha cen' into my input box, the function searches for ('alpha' or 'cen') and returns the one record as desired.

However, if I replace the '|' with a '&' to search for ('alpha' and 'cen') I get no results. Even if I enter 'alpha centauri', I get no result at all.

Why?

PM 77-1
  • 12,254
  • 20
  • 64
  • 106
4ndy
  • 540
  • 1
  • 7
  • 21

1 Answers1

1

While a | in a regex allows alternation, an & carries no special meaning. Your current code is trying to find a literal match for alpha&cen, which clearly doesn't match any of your data.

michael
  • 738
  • 4
  • 10