В вашем шаблоне \S
будет соответствовать любому непробельному символу, а также будет соответствовать di git.
. Как упомянуто в комментарии, вы можете исключить соответствие di git, используя класс отрицанных символов . Если Если вы повторяете класс символов после этого 1+ раз, то часть перед @ должна содержать как минимум 2 символа.
Если минимум должен быть 1 символ, вы можете использовать *
вместо +
.
Обратите внимание, что вам не нужно {1}
и что [a-zA-z]
может соответствовать больше , чем [a-zA-Z]
Если вы повторяете класс символов [a-zA-Z]*
в конце 0+ раз, используя *
совпадение может также соответствовать только точке.
Вы можете обновить шаблон так:
^[^\d\s][\w_.-]*@[\w_.-]+\.[a-zA-Z]+$
Regex demo
Если использовать \S
слишком широко, другим вариантом может быть использование отрицательного предвзятого отношения, утверждающего не ди git с последующим повторением класса символов 1+ раз:
^(?!\d)[\w_.-]+@[\w_.-]+\.[a-zA-Z]+$
Regex demo