0

What's a good JavaScript library for searching a given string for a large list of names.

For example, given a list of 1000 politicians names find every instance in a string and wrap it in a span.

Priorities are performance with a growing list of names, and accuracy in determining difference between eg, "Tony Blair", "Tony Blair III".

For example, this:

["Tony Blair", "Margaret Thatcher", "Tony Blairite", "Tony Blair III", etc...]
"The best PM after Tony Blair was Margaret Thatcher."

Becomes:

"The best PM after <span class="mp">Tony Blair</span> was <span class="mp">Margaret Thatcher</span>."
Andy Hume
  • 40,474
  • 10
  • 47
  • 58
  • 1
    This could be trivial with a loop and `indexOf` but I'd be curious to find more efficient solutions, maybe starting with sorting the array. – Rick Viscomi May 08 '13 at 00:06

1 Answers1

0
var names = ['foo','bar'];
var content = "this foo is bar foobar  foo ";
for (var c=0,l=names.length;c<l;c++) {
  var r = new RegExp("\\b("+names[c]+")\\b","gi");
  content = content.replace(r,'<span class="mp">$1</span>');
}
CrayonViolent
  • 32,111
  • 5
  • 56
  • 79