Разве вы не можете сделать что-то вроде
if (txtEmail.Text.Trim().length > 0) then
validate
Я думаю, что поскольку регулярные выражения довольно сложны, все, что можно сделать вне регулярного выражения, следует делать вне регулярного выражения, это должно сделать код более читабельным, но это только я.
Ваше регулярное выражение довольно сложное, здесь вы должны найти более простое.
В любом случае, вы можете сделать что-то вроде этого: ^ (regex) {1} $