Ade sends some code that he discovered as the culprit behind some searches taking, literally, forever to complete. Written by a senior developer at his company, I believe we can officially nominate this as the “Regular Expre-What?” Function of the Year. It's quite impressive to see nine potential endless loops in such a small function, although this still remains proof positive that (9*INFINITY) is still infinity.

private static string StripAllSearchCharacters(string Criteria)
{
 int iPos = -1;

 iPos = Criteria.IndexOf("*");      
 while (iPos != -1)
 {
  //ED: String.Remove() returns a string; it does not change the string itself
  Criteria.Remove(iPos, 1);
  iPos = Criteria.IndexOf("*");    
 }

 iPos = Criteria.IndexOf("<>);      
 while (iPos != -1)
 {
   Criteria.Remove(iPos, 1);
  iPos = Criteria.IndexOf("<>);    
 }

 iPos = Criteria.IndexOf(">");      
 while (iPos != -1)
 {
  Criteria.Remove(iPos, 1);
  iPos = Criteria.IndexOf(">");    
 }

 iPos = Criteria.IndexOf("!");      
 while (iPos != -1)
 {
  Criteria.Remove(iPos, 1);
  iPos = Criteria.IndexOf("!");    
 }


 iPos = Criteria.IndexOf("&");      
 while (iPos != -1)
 {
  Criteria.Remove(iPos, 1);
  iPos = Criteria.IndexOf("&");    
 }  

 iPos = Criteria.IndexOf("|");      
 while (iPos != -1)
 {
  Criteria.Remove(iPos, 1);
  iPos = Criteria.IndexOf("|");    
 }

 iPos = Criteria.IndexOf("?");      
 while (iPos != -1)
 {
  Criteria.Remove(iPos, 1);
  iPos = Criteria.IndexOf("?");    
 }

 iPos = Criteria.IndexOf("!=");      
 while (iPos != -1)
 {
  Criteria.Remove(iPos, 1);
  iPos = Criteria.IndexOf("!=");    
 }

 iPos = Criteria.IndexOf("=");      
 while (iPos != -1)
 {
  Criteria.Remove(iPos, 1);
  iPos = Criteria.IndexOf("=");    
 }

 return Criteria;
}

Speaking of the Function of the Year, Raymond Chen nominated one as well. And, coming soon, just in time for Halloween, the scarriest system of the year ...