three rounds of review kept finding holes in a single pattern because one regex
was trying to know where the value ends in three different syntaxes at once
each form now stops at what actually ends it. a brace for a jsx expression, the
opening quote for an attribute so it cannot run into a neighbouring one, a comma
or brace for an object literal where quotes are normal
the array already tests each rule on its own so this needs no other change