Sorry. I wonder if this is better:
AND(
IF(LEN([_THIS]) > 0,
IF(COUNT(SPLIT([_THIS], " ")) >= 1,
AND(
FIND(LEFT(INDEX(SPLIT([_THIS], " "), 1), 1), UPPER(LEFT(INDEX(SPLIT([_THIS], " "), 1), 1))) = 1,
IF(LEN(INDEX(SPLIT([_THIS], " "), 1)) > 1,
RIGHT(INDEX(SPLIT([_THIS], " "), 1), LEN(INDEX(SPLIT([_THIS], " "), 1)) - 1) =
LOWER(RIGHT(INDEX(SPLIT([_THIS], " "), 1), LEN(INDEX(SPLIT([_THIS], " "), 1)) - 1)),
TRUE
)
),
TRUE
),
FALSE
),
IF(COUNT(SPLIT([_THIS], " ")) >= 2,
AND(
FIND(LEFT(INDEX(SPLIT([_THIS], " "), 2), 1), UPPER(LEFT(INDEX(SPLIT([_THIS], " "), 2), 1))) = 1,
IF(LEN(INDEX(SPLIT([_THIS], " "), 2)) > 1,
RIGHT(INDEX(SPLIT([_THIS], " "), 2), LEN(INDEX(SPLIT([_THIS], " "), 2)) - 1) =
LOWER(RIGHT(INDEX(SPLIT([_THIS], " "), 2), LEN(INDEX(SPLIT([_THIS], " "), 2)) - 1)),
TRUE
)
),
TRUE
),
IF(COUNT(SPLIT([_THIS], " ")) >= 3,
AND(
FIND(LEFT(INDEX(SPLIT([_THIS], " "), 3), 1), UPPER(LEFT(INDEX(SPLIT([_THIS], " "), 3), 1))) = 1,
IF(LEN(INDEX(SPLIT([_THIS], " "), 3)) > 1,
RIGHT(INDEX(SPLIT([_THIS], " "), 3), LEN(INDEX(SPLIT([_THIS], " "), 3)) - 1) =
LOWER(RIGHT(INDEX(SPLIT([_THIS], " "), 3), LEN(INDEX(SPLIT([_THIS], " "), 3)) - 1)),
TRUE
)
),
TRUE
)
)