tryusing System.Text.RegularExpressions; string re= @"^[^()]*(?:\((?>[^()]+|\((?<PAREN>)|\)(?<-PAREN>))*(?(PAREN)(?!))\)[^()]*)*$";
string s1 = "..(..(..(.)(.)(..(..)..)..)..)";
string s2 = "..)..(..)..(..";
string s3="";
string s4 = ")";
string s5 = "(";
string s6="()";
string s7="(.)";
System.Console.WriteLine("{1}:{0}",s1,Regex.IsMatch(s1,re));
System.Console.WriteLine("{1}:{0}",s2,Regex.IsMatch(s2,re));
System.Console.WriteLine("{1}:{0}",s3,Regex.IsMatch(s3,re));
System.Console.WriteLine("{1}:{0}",s4,Regex.IsMatch(s4,re));
System.Console.WriteLine("{1}:{0}",s5,Regex.IsMatch(s5,re));
System.Console.WriteLine("{1}:{0}",s6,Regex.IsMatch(s6,re));
System.Console.WriteLine("{1}:{0}",s7,Regex.IsMatch(s7,re));