2010-07-13 4 views
2

나는 다음과 같은 asp.net 마크 업이 있습니다IE에서 정규식이 실패하지만 Chrome 및 Firefox에서 작동합니까?

<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 같은 암호를 입력하면, 그것은 크롬과 파이어 폭스에 통과,하지만 내 암호가 7 자 이상을 포함해야 메시지를 적어도 한 숫자가 인터넷 익스플로러에 표시됩니다.

+0

위의 코드를 IE8의 VS2010에서 테스트했는데 문제를 재현 할 수 없습니다. 세부 사항을 더 제공 할 수 있습니까? – Kelsey

+0

... 특히 IE의 어떤 버전을 테스트하고 있습니까? –

+0

나는 IE 8을 사용하고있다 – Xaisoft

답변

2

악명 높은 IE regex lookahead bug에 물린 것 같습니다. 길이 검사를 다른 조건처럼 미리보기로 만들고이를 먼저 처리하면 문제를 해결할 수 있습니다.

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

하지만 다른 문제가 있다고 생각합니다. (?=.*[a-zA-Z]{2})두 개와 연속적으로 일치합니다. 글자; 그게 너의 의도 야? 적어도 두 글자를 요구하고 싶지만 연속적 일 필요는없는 경우 (?=.*[a-zA-Z].*[a-zA-Z])을 사용해야합니다.

+0

나는 이것을 발사하고 알려줄 것이다. 나는 그것에 관한 게시물을 읽고있다. 나는 정규 표현식에 익숙하지 않으므로 미리보기가 내 머리 위로 가고있다. – Xaisoft

+0

아직이 사이트를 체크 아웃하지 않으 셨다면 다음 사이트를 방문해보십시오. http://www.regular-expressions.info/ –

+0

테스트를 거쳐 작동했습니다. 링크를 가져 주셔서 감사합니다. – Xaisoft

관련 문제