/calc(\(((?>[^()]+)|(?-2))*\))/su
calc() = true : calc() calc(abc) = true : calc(abc) calc(abc(xyz)123) = true : calc(abc(xyz)123) calc(abc(xyz) (1(2)3) ) = true : calc(abc(xyz) (1(2)3) ) calc( abc ( xyz ) ( 1 ( 2 ) 3 ) ) = true : calc( abc ( xyz ) ( 1 ( 2 ) 3 ) ) calc( abc ( xy z ) ( 1 ( 2 ) 3 ) ) = true : calc( abc ( xy z ) ( 1 ( 2 ) 3 ) ) calc(abc = false calc(abc(xyz)123 = false