3 comments

[ 5.6 ms ] story [ 19.7 ms ] thread
Time to find a text version of cspan
Someone posted similar js when this xkcd was discussed yesterday (https://news.ycombinator.com/item?id=6696355), but also missed that js lets you grab nodesets using xpaths directly:

  var snap = document.evaluate('//text()', 
    document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
    null);
  for (var i=0;i<snap.snapshotLength; i++) {
    t=snap.snapshotItem(i);
    t.textContent = replace(t.textContent);
  }

In addition your code uses \s\s* when you just mean \s+; also you are using case-insensitive matches for the 'dictRegex' pattern with case-sensitive matches for the individual patterns, so you replace eg 'election' (lower case e) with 'undefined'.

Like the other js implementation you're not matching word boundaries (\b).

Thanks for the ignoreCase problem, I fixed it. I actually was using a \b in the link but forgot to update the source accordingly. The reason I use \s\s* over \s+ is because I once saw that it has some performance benefits, although it really doesn't make a difference