Hibernate Validator를 사용하여 일부 열의 유효성을 검사하고 싶습니다. 이해할 수있는 문제는 자바의 \ w 마커가 악센트가있는 문자를 허용하지 않는다는 것입니다.Java의 정규 표현식의 악센트
Relatório와 같은 단어의 유효성을 검사 할 수 있도록 정규 표현식을 쓸 수있는 방법이 있습니까? (대괄호 사이에 악센트가있는 모든 문자를 쓰고 싶지는 않습니다.이 정규 표현식을 많은 열에 쓰려고하기 때문에)?
Hibernate Validator를 사용하여 일부 열의 유효성을 검사하고 싶습니다. 이해할 수있는 문제는 자바의 \ w 마커가 악센트가있는 문자를 허용하지 않는다는 것입니다.Java의 정규 표현식의 악센트
Relatório와 같은 단어의 유효성을 검사 할 수 있도록 정규 표현식을 쓸 수있는 방법이 있습니까? (대괄호 사이에 악센트가있는 모든 문자를 쓰고 싶지는 않습니다.이 정규 표현식을 많은 열에 쓰려고하기 때문에)?
Java regex documentation에는 유니 코드 범주에 대한 섹션이 있습니다 ("유니 코드 블록 및 범주 용 클래스"검색). 당신이 편지를 찾고 있다면, 나는 \p{L}
이 당신이 원하는 범주라고 생각합니다.
내가 더 운이 : 자바에서
\p{InCombiningDiacriticalMarks}+
나는 다음과 같은 방법을 사용 : 놀라운
import java.text.Normalizer;
import java.text.Normalizer.Form;
public static String removeAccents(String text) {
return text == null ? null :
Normalizer.normalize(text, Form.NFD)
.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
이 방법은 모든 종류의 악센트를 완벽하게 제거합니다. '''''''''''''''''으로 변환합니다. 그것은 굉장히 정상화된다. –
을! '\ p {L}'은 모든 언어의 글자와 일치합니다. '문자','문자','문자','문자'와 일치하지만'''''''''''''''''''''''''''''''''입니다. 이것은 완벽 해! –
질문과 일치하지 않습니다. http://fiddle.re/htxcq6 –
@Kuriel 끝 부분에'+'또는'* '를 추가하면 완벽하게 작동합니다. 테스트중인 것은 단일 문자와 일치하는 것입니다. –