Я использую следующее регулярное выражение для проверки электронных писем и только что заметил некоторые проблемы и не вижу в чем проблема:
/^[a-z0-9_.-]+@[a-z0-9.-]+.[a-z]{2,6}$/i.test(value)
support@tes is invalid
support@test is valid
[email protected] is invalid
[email protected] is valid
2,6 - для того, чтобы требовать и заканчивать tld между 2 или 6, и это тоже не работает. Я уверен, что раньше я работал над этим.
В регулярном выражении .
является подстановочным знаком (подразумевается любой символ). вам нужно избежать этого как \.
Имейте в виду, что регулярное выражение слишком ограничительное. В адресе вы можете иметь не-альфа-числовые символы, например '
Я замечаю, что вы не избегаете .
, Там может быть больше, чем это, но это выскакивает на меня.
Существует много способов регулярного выражения адреса электронной почты. в зависимости от того, насколько точным и ограничительным вы его хотите, но переписать рабочее регулярное выражение, наиболее близкое к тому, что у вас есть в вопросе. Это должно работать:
^[\w_.-]+@[\w]+\.[\w]{2,6}$
support@tes - Invalid
support@test - Invalid
[email protected] - Invalid
[email protected] - Valid
[email protected] - Valid
Но также имейте в виду ВСЕ символы, разрешенные в действительном адресе электронной почты. Какие символы разрешены на адрес электронной почты?
Это приличный чек для электронной почты с Regex
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
Однако вы можете прочитать это. Использование регулярного выражения для проверки адреса электронной почты