RegEx проблема с IE7 при попытке проверить адрес электронной почты - PullRequest
2 голосов
/ 23 сентября 2011

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

^\s*[a-zA-Z0-9_\+-]{1,63}(\.[a-zA-Z0-9_\+-]{1,63})*@(?=[a-zA-Z0-9-\.]{0,255}\.?\s*$)[a- zA-Z0-9-]{1,63}(\.[a-zA-Z0-9-]{1,63}){0,126}\.([a-zA-Z]{2,63})\.?\s*$

Теперь это нормально работает с IE8 -> и последней версией Mozilla и Opera, например.Я уже читал об этой статье: http://blog.stevenlevithan.com/archives/regex-lookahead-bug

Но даже я использовал. * С? = Я не мог заставить его работать.У любого гуру RegEx есть идеи, что я делаю неправильно.Я также попробовал это:

^\s*[a-zA-Z0-9_\+-]{1,63}(\.[a-zA-Z0-9_\+-]{1,63})*@(?=.*[a-zA-Z0-9-\.]{0,255}\.*?\s*$)[a- zA-Z0-9-]{1,63}(\.[a-zA-Z0-9-]{1,63}){0,126}\.([a-zA-Z]{2,63})\.*?\s*$

Но безуспешно.

Ответы [ 3 ]

0 голосов
/ 24 сентября 2011

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

const string myRegex = @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@"
        + @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\."
        + @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|"
        + @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";
0 голосов
/ 25 сентября 2011

Вы вообще пытались убрать взгляд? Я согласен с @Gerben, что в вашем регулярном выражении это не имеет смысла:

^\s*[a-zA-Z0-9_\+-]{1,63}(\.[a-zA-Z0-9_\+-]{1,63})*@[a-zA-Z0-9-]{1,63}(\.[a-zA-Z0-9-]{1,63}){0,126}\.([a-zA-Z]{2,63})\.?\s*$
0 голосов
/ 24 сентября 2011

Является ли пробел в последней группе

@(?=[a-zA-Z0-9-\.]{0,255}\.?\s*$)[a- zA-Z0-9-]{1,63}

сразу после - преднамеренным?Это, вероятно, не будет работать с консервативным двигателем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...