| Title | Test
                    Find
                    
                    Pattern Title | 
            
                | Expression | (?n:(^(?(?![^,]+?,)((?<first>[A-Z][a-z]*?) )?((?<second>[A-Z][a-z]*?) )?((?<third>[A-Z][a-z]*?) )?)(?<last>[A-Z](('|[a-z]{1,2})[A-Z])?[a-z]+))(?(?=,)(, (?<first>[A-Z][a-z]*?))?( (?<second>[A-Z][a-z]*?))?( (?<third>[A-Z][a-z]*?))?)$) | 
            
                | Description | Regular expression for validating a person's full name. Matches on two general formats: 1) first second third last (where first, second, and third names are optional and all present are separated by a space); 2) last, first second third (where second and third are optional, last is followed immediately by a comma and a space, and second, and third, if present, are separated by a space from each other and from first). First corresponds to surname and last corresponds to family name. Each name part is captured to a named group to facilitate program manipulation. Each name part must begin with an uppercase letter, followed by zero or more lowercase letters, except for the last name. Last name must begin with an uppercase letter, followed by one or more lowercase letters, but will match exceptions formatted like the following: McD..., MacD..., O'R... Only format is validated, not spelling. NOTE: This regular expression uses positive and negative regex lookahead to determine the general format of the name, i.e. the presence or the absence of the comma determines the general format that will match. Furthermore, this initial version is not designed to accommodate titles and things like "3rd". | 
            
                | Matches | John Paul Jones | Jones, John P | Jones | 
            
                | Non-Matches | Paul Jones, John | John J | Mr. John Paul Jones 3rd | 
            
                | Author | Rating:
                        
Not yet rated.
                    Jerry Schmersahl | 
            
                | Source |  | 
            
              | Your Rating |  | 
        
    
 
    
    
     
        
                
	                Title: manager
	                Name: dennis l Galloway
	                Date: 11/15/2013 7:47:04 PM
	                Comment: 
test1
                
                
            
                
	                Title: Fine as is in c#
	                Name: Evan Eveland
	                Date: 5/10/2007 8:42:54 AM
	                Comment: 
Works fine in c# as is.  Thanks!
string pattern = @"(?n:(^(?(?![^,]+?,)((?<first>[A-Z][a-z]*?) )?((?<second>[A-Z][a-z]*?) )?((?<third>[A-Z][a-z]*?) )?)(?<last>[A-Z](('|[a-z]{1,2})[A-Z])?[a-z]+))(?(?=,)(, (?<first>[A-Z][a-z]*?))?( (?<second>[A-Z][a-z]*?))?( (?<third>[A-Z][a-z]*?))?)$)";
Queue<string> tmpStrings = matchPattern(pattern, name);
//   using System.Text.RegularExpressions;
// matchPattern; pass pattern as string, then text to match
private Queue<string> matchPattern(string pattern, string text)
{
     Queue<string> retval = new Queue<string>();
     Regex r = new Regex(pattern);
     int[] groups = r.GetGroupNumbers();
     Match m = r.Match(text);
     if (m.Success)
     {
          for (int i = 1; i < groups.Length; i++)
          {
               // Get the current match group....
               Group cur_group = m.Groups[groups[i]];
               if (cur_group.ToString() != null && cur_group.ToString() != "")
               {
                    retval.Enqueue(cur_group.ToString());
               }
          }
     }
     return retval;
}
                
                
            
                
	                Title: Syntax Error
	                Name: Rick
	                Date: 3/15/2004 2:58:58 PM
	                Comment: 
When it is tested in the JS mode, there is a syntax error.  I am using IE6.