Регулярное выражение не работает в IE, но работает в Chrome и Firefox? - PullRequest
2 голосов
/ 14 июля 2010

У меня есть следующая разметка asp.net:

<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"   
ValidationGroup="passwordValidation"></asp:TextBox>

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" Display="Dynamic"
ControlToValidate="txtPassword" Text="Required" ValidationGroup="passwordValidation" />

<asp:RegularExpressionValidator runat="server" ControlToValidate="txtPassword"  
Text="Passwords should contain a minimum of 7 characters with at least one numeric 
character." ValidationExpression="^(?=.*\d{1})(?=.*[a-zA-Z]{2}).{7,}$"  
ValidationGroup="passwordValidation" Display="Dynamic"></asp:RegularExpressionValidator>

Если я ввожу пароль, такой как test1234, он передается в chrome и firefox, но сообщение о том, что мой пароль должен содержать не менее 7 символовхотя бы с одним цифровым символом отображается в Internet Explorer

1 Ответ

2 голосов
/ 14 июля 2010

Вероятно, вас укусила печально известная ошибка IE regex . Вы должны быть в состоянии обойти это, сделав проверку длины, как и другие условия, и поставив ее первой.

^(?=.{7,}$)(?=.*\d)(?=.*[a-zA-Z]{2}).*

Но я думаю, что вижу другую проблему. (?=.*[a-zA-Z]{2}) соответствует двум последовательным буквам; это действительно твое намерение? Если вы хотите указать как минимум две буквы, но не обязательно подряд, вы должны использовать (?=.*[a-zA-Z].*[a-zA-Z]).

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