2012-08-30 3 views
0

암호 필드의 유효성을 검사하는 RegularExpressionValidator가 있습니다. 비밀번호는 문자와 적어도 하나의 숫자를 포함해야하며 8 ~ 20 자 사이 여야합니다.정규 표현식의 문제점

<asp:RegularExpressionValidator ID="regexPassword" runat="server" ControlToValidate="txtNewPassword" 
       ValidationExpression="^(?=.*[0-9])(?=.*[a-zA-Z])\w{8,20}$" ErrorMessage="Password must contain at least one digit and must be between 8 and 20 characters" 
       Text="*" ValidationGroup="Passwords"></asp:RegularExpressionValidator> 

이 내 개발 환경에서 잘 작동하고 내 로컬 컴퓨터에서 작동하지만 때 내가 프로덕션 환경으로 마이그레이션 할 때 작동하지 않습니다 여기 내 검증합니다. 프로덕션 환경에서는 먼저 전달해야하는 숫자로 시작해야합니다. 우리의 프로덕션 환경에서는 Win 2k8 R2 시스템이 실행되고 있지만 문제가 될 수는 없습니다. 나는이 표현이 작동 할 것이라고 말하면서 또 하나의 포스트를 발견했다. 그래서 나는 그것을 테스트했고, 실제로 작동했다. 그러나 오직 내 개발 환경에서만 그렇다. 누군가 내 프로덕션 환경에서이 작업을 수행하는 데 필요한 번호를 사용해야하는 이유를 알 수 있습니까? 번호는 암호의 아무 곳에 나 있어야합니다.

+0

정규 표현식으로 문제가 없습니다. asp.net의 엔진이 다르게 작동 할 수도 있지만식이 제대로 작동하고 의도 한대로 작동해야합니다. –

+0

IE6를 사용하고 있지 않습니까? http://blog.stevenlevithan.com/archives/regex-lookahead-bug – Patrick

+0

각 환경의 IIS 및 .NET 프레임 워크는 어떤 버전, 서비스 팩 등입니까? – CaffGeek

답변

1

이 시도

감사 :

^(?=\w{8,20}$)(?=.*[0-9])(?=.*[a-zA-Z]).* 

그것은이 IE6의 버그에 관한 것으로,하지만 여전히 생산 시스템에서 실행되는 ASP.NET의 버전에 따라 적용 할 수 있습니다.

+0

흥미 롭습니다! IE 6에서 로컬로 액세스하고 Prod에서 액세스 할 때 작동하지만 실패합니다. 아마도 인증 문제일까요? – rob