2014-03-06 3 views
2

정규 표현식을 처음 사용하며 다음 문자가있는 메시지를 승인하고 싶습니다. <>.*;",#%&)(=+-! 같은 자리의 번호와 메시지, 특수 문자의 수 등 @~{[alphabetical letters 같은 문자 spacenew_line자바에서 모든 자릿수와 특수 문자를 가져 오는 정규 표현식

나머지 ..해야 승인되지 않아야한다.

java.util.regex.Pattern my_pattern = null; 
my_pattern = Pattern.compile("^.*(0-9|<|>|.|*|;|\"|,|#|%|&|\\(|\\)|=|\+|-|!|\s|\n).*"); 

답변

5

당신은 character class를 사용할 수 있습니다

Pattern.compile("^[0-9<>.*;\",#%&()=+!\\s-]+$"); 

가 문자 클래스 내에서 이러한 특수 문자를 이스케이프 할 필요가 없습니다 그것은 다수의 파이프를 사용하여 해당 교대 더 효율적입니다. \s은 이미 개행과 일치하므로 \n을 삭제했습니다.

+0

자바 정규식 문자 클래스에 대해서는 잘 모르겠지만 "-"문자를 문자 클래스의 첫 번째 문자로 사용해서는 안됩니다. –

+2

@diveshpremdeep :'-'는 이스케이프를 피하기 위해 문자 클래스에서 첫 번째 또는 마지막 일 수 있습니다. – anubhava

관련 문제