Регулярное выражение для проверки длины в адресе электронной почты - PullRequest
3 голосов
/ 13 июля 2010

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

^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*[,]?\b)*$.

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

^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)){1,150}\s*[,]?\b)*$. 

Но это не работает. Не могли бы вы изменить регулярное выражение, чтобы оно также реализовывало эту проверку.

Ответы [ 5 ]

5 голосов
/ 13 июля 2010

Зачем использовать регулярное выражение, если вы можете просто проверить длину строки? Если необходимо, используйте второе регулярное выражение:

^.{1,150}$
1 голос
/ 04 апреля 2017

Используйте взгляд вперед

/(?=^.{1,150}$)(your regex goes here)/
1 голос
/ 13 июля 2010

Я бы предпочел не усложнять это регулярное выражение и добавить явную проверку длины перед проверкой соответствия электронной почты. В JavaScript это будет примерно так:

function validateEmail(email) {
    var regex = /^(\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*[,]?\b)*$/;
    // 20 is used instead of 150 for sake of example
    return email.length <= 20 && regex.test(email);
}
// validateEmail("jdoe@example.com") == true
// validateEmail("loooooooooooooooooooonjohn@example.com") == false

Кстати, точка после $ в вашем регулярном выражении кажется ошибкой, поэтому я пропустил ее в своем фрагменте.

0 голосов
/ 12 ноября 2014

Я прибыл сюда в поисках способа продлить мой ng-pattern для электронной почты для угловой формы.

Используя подход Рорика для проверки длины отдельно, я нашел гораздо более простое решение: просто установите ng-maxlength="150" на входе.Затем вы можете настроить сообщение об ошибке, сообщающее пользователю, что электронная почта слишком длинная.

maxlength="150" тоже работает нормально, не позволяя добавлять лишние символы в поле, но мне понравилось, что ng-maxlength говорит вам, что не так, вместо того, чтобы обрезать вашу строку.

0 голосов
/ 13 июля 2010
^([a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]){0,70}$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...