I'm using a direct alternation approach that specifically targets each of the 16 items. Each item is separated by the | (OR) operator, and I've carefully escaped special regex metacharacters:
- For email addresses: escaped + and . characters
- For phone numbers: escaped + and parentheses
- For ISO dates with timezone: escaped the + in the offset
- For masked credit card numbers: escaped the * characters
- For currency amounts: escaped $, parentheses, and decimal points
This approach ensures we match exactly the specified items without accidentally matching similar but invalid items in the text.