2013-02-18 2 views
1

내가 암호 필드를 검증하기 위해 스트럿 2 주석 유효성 검사를 사용하고 있지만, 난 내 코딩에게 올바른 줄 whwn이 오류가 표시가정규식 하나 캐피탈, 하나 개의 숫자 최소 7 최대 15 자

@RequiredStringValidator(message = "Please provide a password") 
    @StringLengthFieldValidator(minLength="7",maxLength="15",message="The Password should be minmum 7 character and maximum 15 charcters") 
    @RegexFieldValidator(expression = "^[0-9A-Z]+$", message = "Password atleast have one Capital and one Number") 
입니다

어떤 아이디어?

답변

1

당신이 찾고있는 정규식은 다음과 같습니다

^(.*[0-9].*[A-Z].*)|(.*[A-Z].*[0-9].*)$ 

제공 한 하나

^[0-9A-Z]+$ 

숫자 및/또는 수도

내가 생각
2

구성된 암호와 일치 그는 정말로 필요합니다 (테스트되지 않음) : ^.*(?=.{7,15})(?=.*\d)(?=.*[a-zA-Z]).*$

하지만 정규식을 사용하지 않을 것입니다 ... 당신의 액션에 validate 메소드를 추가하고 요구 사항에 대해 간단한 루프와 카운터를 체크하는 것이 대부분의 사람들에게 당신의 정규식보다 훨씬 더 쉽습니다. 구성하기가 어려우며 나중에 읽기가 어려울 것입니다.

예를 들어 위의 괴물을 변경하려면 어떻게해야합니까? 숫자와 문자 용 카운터가있는 문자열의 문자를 반복하면 이해하기 쉽고 대문자, 소문자 및 기호를 추가하는 것을 생각하면 이해하기 쉽습니다.

+1

암호에 대한 요구 사항이 변경되면 (그리고 요구 사항이 결국 변경됩니다) 규칙을 수정하는 것이 정규식에 모두 들어간 경우와는 별도로 수행하는 것이 더 쉽습니다. – Danack