Проверка электронной почты с ограничением символов - PullRequest
0 голосов
/ 20 марта 2012

Я создал валидатор электронной почты для ASP.NET с ограничением в 100 символов.Все работало нормально, а потом я сделал обновление примерно через 20 минут, и я получаю следующую ошибку.

parsing "[\ w + ([- +.] \ W +) @\ w + ([-.] \ w +) . \ w + ([-.] \ w +) ] {0,100} "- [xy] в обратном порядке.Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.Сведения об исключении: System.ArgumentException: синтаксический анализ "[\ w + ([- +.] \ W +) @ \ w + ([-.] \ W +) . \ W + ([-.] \ W +) ] {0,100} "- [xy] диапазон в обратном порядке.

Итак, мой код <asp:RegularExpressionValidator ID="emailReg" runat="server" ControlToValidate="email" ValidationExpression="[\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*]{0,100}" Text="&nbsp;<img src='err.png' alt='*' title='Please enter a valid email address less than 100 characters long'>" ErrorMessage="Please enter a valid email address less than 100 characters long"></asp:RegularExpressionValidator>

Может кто-нибудь сказать мне, что вдруг пошло не так?Я ничего не изменил.

1 Ответ

1 голос
/ 20 марта 2012

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

Включив все свое регулярное выражение в класс символов [ ]{1,100},все в , что этот класс символов не интерпретируется как регулярное выражение, а вместо этого как содержимое класса символов.

То есть, ваше регулярное выражение соответствует от 0 до 100 из \w, +, *, (, ... и т. Д.

Ошибка происходит от дефисов внутри: если я делаю регулярное выражение [a-z], это означает «сопоставить все символы от a до z (включительно)".

Ваше регулярное выражение имеет [-+ и [-., все в пределах []{0,100}.Итак, вы пытаетесь сказать «сопоставить все символы от [ до +».Это определяется символом Unicode.Левая квадратная скобка [ имеет код Unicode 91, тогда как + - код Unicode 43.

Сообщение об ошибке, которое вы получаете, состоит в том, что вы пытаетесь выбрать все символы между точками Unicode 91 и 43, чтоback to front.

В любом случае, чтобы исправить свое регулярное выражение, выведите его из [].

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

Чтобы ввести ограничение в 100 символов в регулярном выражении, вам придется использоватьВзгляд в будущее:

^(?=.{0,100}$)\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

^(?=.{0,100}$) гарантирует, что в строке не более 100 символов.Если это так, остальная часть регулярного выражения затем приступает к его проверке.

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