The optimal way to validate sub-questions has not been implemented. Ideally, there would be a regex validation equation per sub-question so you could have different ones for each part of a multiple-short text. That doesn't exist yet (and probably won't for quite a while unless you know of volunteers with time to implement it).
However, you can fake it using the
Whole question validation and
Tip for whole question validation options.
Here is a working example.
Say your question is "q1", and your sub-questions are "name", "email", and "phone", you could set the Whole question validation to:
(is_empty(q1_email) or regexMatch('/(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})/', q1_email))
and
(is_empty(q1_phone) or regexMatch('/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/', q1_phone))
This will ensure that the user enters a valid email and phone number (in this case, a non-answer is also accepted via is_empty()).
Then, to tailor the validation message, you would use this for the
Tip for whole question validation.
{if((is_empty(q1_email) or regexMatch('/(\w[-._\w]*\w@\w[-._\w]*\w\.\w{2,3})/', q1_email)), '', 'Please enter a valid email address.<br />')}
{if((is_empty(q1_phone) or regexMatch('/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/', q1_phone)), '', 'Please enter a valid phone number.')}
As you can see, you are using the exact same validation expression for q1_email and q1_phone, you're just surrounding it with:
{if(validation_expression,'','Please enter a valid ....')}
And here are some screen shots: