2011-04-07 5 views
2

JSR-303 (javax.validation)에서 regex 유효성 검사가 있습니다. 예를 들어 :정규 표현식 유효성 검사 - 문제가되는 문자를 표시합니다. javax.validation

@Pattern(regexp="[\w_\\.]+") 
private String username; 

값이 유효하지 않은 경우 (정규식과 일치하지 않습니다) 표시되는 기본 메시지는 "{정규식} 일치해야"같은입니다. 하지만 사용자는 정규식을 이해하지 못하기 때문에이를 표현하는 것은 중요하지 않습니다. 옵션에는 "사용자 이름에 잘못된 문자가 포함되어 있습니다"라는 메시지 만 표시되며 대부분의 경우에는 문제가되지 않을 수 있습니다. 그러나 어떤 문자가 잘못되었는지를 보여주는 것이 좋습니다.

정규식으로는 직접 성취 할 수 없습니다. 일치하거나 일치하지 않습니다. 일부 구성 요소가 누락 된 다른 패턴을 정의하거나 일치시킬 때까지 문자열에서 문자를 삭제 한 다음이 문자를 사용자에게 표시해야합니다.

일반적으로 그랬습니다. 또 다른 질문은 javax.validation을 사용하여이를 달성하는 방법입니다. "*, 문자 및 $ 불법인가?"라는 메시지가 보이는 있도록

방법, javax.validation에 잘못된 문자를 표시 할 수

+1

가끔은 불법적 인 것을 말하지 않고 합법적 인 것을 말하는 것이 좋습니다. 예 : "사용자 이름은 숫자와 문자로만 구성되어야합니다." – Ingo

+0

@Ingo - 그렇습니다. 그러나 "밑줄 및 점"("및 대시 및 물결표")을 추가하면 너무 길어집니다. – Bozho

답변

2

내가 갈 것 :

그래서, 질문을 요약합니다 유효성 검사 패턴이 무효화되었습니다. 그래서 패턴은 바로 다음과 같습니다 검증 실패에

[^\w_\\.] 

, 일치하는 입력 문자열 및 출력 사용자에게 결과에 대한.

+0

좋은 아이디어. 이를 위해서는 맞춤 검사기가 필요합니다. – Bozho

+0

@Bozho - 이렇게하면 입력이 비어 있지 않음을 확인하기 위해 뭔가가 필요할 수도 있다는 것을 잊지 마십시오. –