String:
Aqua, Sodium Laureth Sulfate, Sodium Lauryl Sulfate, Dimethicone, Cocamide MEA, Zinc Carbonate, Glycol Distearate, Sodium Chloride, Zinc Pyrithion
I recommend you split your input string by word and then pattern match it, event simpler: not to pattern match if you just want to test that the first letter of each word is uppercase, like:
for (String s : string.split("\\W")) {
if (s.charAt(0) < 'A' || s.charAt(0) > 'Z') {
return false;
}
}
Sounds a lot faster to me (and you can even have the word that failed if you need).