using System.Text.RegularExpressions;
public static void Main()
var input = new []{"John", "John_Smith_a", "John Smith_", "Cpl\\3 John Smith", "Mr. John Smith"};
foreach(string test in input)
Console.WriteLine("{0} : {1}",test, Regex.IsMatch(test,@"^(\s+)?[\w.\\]+\s+\w+\s+\w+(\s+)?$"));