Если вы просто хотите сделать это необязательным, то есть пустую строку или строку, соответствующую вашему регулярному выражению, попробуйте следующее:
^(?:[\w.-]+\@([a-zA-Z0-9-]+\.)+[a-zA-Z0-9]{2,4})?$
Я просто поместил ваше регулярное выражение в группу без захвата (?:)
и сделайте эту группу необязательной с ?
после группы.
И я упростил ваши классы персонажей, [a-zA-Z0-9_]
- это то же самое, что и \w
, и экранирование в большинстве случаев не требуется в символьных предложениях.