2012-10-31 2 views
0

내가에는 문자 , -. 및 움라우트, eszett, 분음 부호 및 유럽 언어에서 다른 유효한 문자로 유니 코드 문자의 범위를 받아, 자바, java.util.regex에서 정규식을 찾고 있어요. 내가 원하지 않는 것은 번호 등 !”£$% 같은 “ ” 또는 “ Tom”, 또는 특수 문자와 같은 공간자바 정규식은 사용자 이름

지금까지 나는 그것이 매우 혼란 찾는거야입니다.

나는이

[A-Za-z.\\s\\-\\.\\W]+$ 

시작 그리고 이것으로 끝났다 :

[A-Za-z.\\s\\-\\.\\D[^!\"£$%\\^&*:;@#~,/?]]+$ 

the documentation

누구나 어떤이에 따라, 내부 대괄호 전혀 말도 할 수 cavat을 사용하여 새 정규식이나 위의 이유가 작동하지 않는 이유에 대한 제안?

내 대답을
+0

오류 메시지가 표시되거나 일치하지 않습니다. 두 경우 모두 정확히 무엇이 발생하는지 더 많은 정보를 제공하십시오. – Cephalopod

+0

'\\ D'를 사용하는 것이 문제 일 수 있습니다. 부정 된 문자 클래스 내에서'\\ d '를 대신 사용하십시오. 또한 처음에'^'를 추가해야합니다. 그렇지 않으면 문자열의 마지막 문자 만 허용 된 문자열 일 경우 정규 표현식이 일치합니다. –

답변

0

사용.. : (? =. * [@ # $ % & \ s]) - 적어도 하나의 특수 문자가 올 때 true를 반환합니다. m 설정) 그리고 username에도 공백이 있으면.

귀하의 요구 사항에 따라 더 많은 특수 문자를 추가 할 수 있습니다. 예 :

String str = "k$shor"; 
String regex = "(?=.*[@#$%&\\s])"; 
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); 
Matcher matcher = pattern.matcher(str); 
System.out.println(matcher.find()); => gives true 
1

, 나는 당신에게 간단한 정규식 유사한을 사용하려면 : [A-Z[^!]]+를, "적어도 한 번 의미한다 : (A ~ Z까지 문자) 또는 (아닌 문자를 '!')
. 무의미 ​​는 " '!'하지 ' 이미 외부 문자 그룹에서 Z.에 따라서 모든 것을 ([A-Z...)가 포함되어 있습니다

[\p{Alpha}'-.]+을 시도하고 Pattern.UNICODE_CHARACTER_CLASS 플래그와 함께 정규 표현식을 컴파일