регулярное выражение электронной почты не работает должным образом

0

Я использую следующее регулярное выражение для проверки электронных писем и только что заметил некоторые проблемы и не вижу в чем проблема:

/^[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, и это тоже не работает. Я уверен, что раньше я работал над этим.

  • 0
    Зачем использовать регулярные выражения, когда вы можете использовать это => php.net/manual/en/filter.examples.validation.php
  • 0
    ... потому что я также копирую в jquery по мере необходимости для проверки.
Показать ещё 3 комментария
Теги:

4 ответа

3
Лучший ответ

В регулярном выражении . является подстановочным знаком (подразумевается любой символ). вам нужно избежать этого как \.

Имейте в виду, что регулярное выражение слишком ограничительное. В адресе вы можете иметь не-альфа-числовые символы, например '

  • 0
    ааа ... даже не заметил ... кажется, делает свое дело. Что касается «Я отмечаю их как недействительные ... az, AZ, 0-9, подчеркивание, дефис и период. Плюс это обрабатывает субдомены.
1

Я замечаю, что вы не избегаете . , Там может быть больше, чем это, но это выскакивает на меня.

  • 0
    Да, точка должна быть удалена, но если этого не сделать, можно получить ложные срабатывания , а не ложные отрицания. И риск ложных срабатываний, как правило, очень низок. Это одна ошибка, с которой люди обычно сходит с рук.
0

Существует много способов регулярного выражения адреса электронной почты. в зависимости от того, насколько точным и ограничительным вы его хотите, но переписать рабочее регулярное выражение, наиболее близкое к тому, что у вас есть в вопросе. Это должно работать:

^[\w_.-]+@[\w]+\.[\w]{2,6}$

support@tes - Invalid
support@test - Invalid
[email protected] - Invalid
[email protected] - Valid
[email protected] - Valid 

Но также имейте в виду ВСЕ символы, разрешенные в действительном адресе электронной почты. Какие символы разрешены на адрес электронной почты?

0

Это приличный чек для электронной почты с Regex

 \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

Однако вы можете прочитать это. Использование регулярного выражения для проверки адреса электронной почты

Ещё вопросы

Сообщество Overcoder
Наверх
Меню