2009-03-25 2 views
0

다음 RegEx 표현식을 사용하면 regexlib.com에서 "2rocks"문자열을 사용하여이를 테스트하면 '일치'가 생성됩니다. 그러나, 내 .NET 응용 프로그램에서 regex 유효성 검사기가 유효성 검사 오류를 throw하는 원인이. 나는 둘 다 내 응용 프로그램과 regexlib.com에서 "rocks2"에 문자열을 변경하는 경우Strange .NET Regex 호

^(?=.*[A-Za-z])[[email protected]\-_\+\.]{6,32}$ 

, 나는 두 곳 모두에서 일치를 얻을.

목표는 문자열의 길이가 6-32 자이고 A-Z, a-z, 숫자 및 정규식에 포함 된 다른 특수 문자를 허용하는 정규 표현식을 사용하여 적어도 하나의 문자를 강제 작성하는 것입니다.

여기 ASP 마크가 있습니다. 완전히 혼란 스럽습니다.

<asp:regularexpressionvalidator 
    id=vldRegEx_LoginID 
    runat="server" 
    ErrorMessage="Regex Error Message" 
    Display="Dynamic" 
    ControlToValidate="txtLoginID" 
    ValidationExpression="^(?=.*[A-Za-z])[[email protected]\-_\+\.]{6,32}$"> 
     <img src="images/error.gif" border="0"> 
</asp:regularexpressionvalidator> 

답변

6

당신이 전달하는 ValidationExpression은 실제로 클라이언트 측 자바 스크립트 정규식으로 사용되는 표현식입니다. Javascript regex는 .NET 정규 표현식의 모든 기능을 지원하지 않으므로 문제가 발생합니다. 당신은 두 가지 옵션이 있습니다

    클라이언트 측 유효성 검사를 끄고에만 서버 측 유효성 검사를 사용
  • 자바 스크립트 정규식 유효한을 할 정규식을 다시 작성 (발리에 EnableClientScript = false를 설정) (자바 스크립트 정규식 테스터 : http://regexpal.com/)
0

this bug에 물릴 수 있습니다. Lookahead 어설 션은 JavaScript RegExp에서 피해야합니다.