2014-10-22 1 views

답변

8

정규 표현식이없는 솔루션은 구아바의 CharMatcher 클래스 사용 될 수 있으며 다소 더 읽기 :

boolean matched = CharMatcher.JAVA_LETTER_OR_DIGIT.or(CharMatcher.WHITESPACE) 
    .or(CharMatcher.anyOf("_.-")).matchesAllOf(yourString); 

은 아마 아스키 문자가 사용 사례에 대한 확인이다 (?)를? 그렇다면 다음을 사용하십시오.

boolean matched = CharMatcher.ASCII.matchesAllOf(yourString); 

예제 및 설명은 wiki page을 참조하십시오.

또한, 일정에 정규 표현을 추출하고이를 미리 계산 할 수 있습니다 : 당신이 CharMatcher의 설명서를 읽으면 당신은 "digit", "letter" 및 자바 "whitespace" 꽤있는 것을 알 수 있습니다, 더 흥미로운 무엇

private static final CharMatcher CHAR_MATCHER = CharMatcher.JAVA_LETTER_OR_DIGIT 
    .or(CharMatcher.WHITESPACE) 
    .or(CharMatcher.anyOf("_.-")) 
    .precomputed(); 

모호한 용어 :

문자가 자바의 정의에 따라 자인지를 결정합니다. ASCII 숫자 만 일치 시키려면 inRange('0', '9')을 사용할 수 있습니다.

또는

는 캐릭터가 자바의 정의에 따라 문자인지 여부를 확인합니다. 라틴 알파벳의 글자 만 일치시키는 경우 inRange('a', 'z').or(inRange('A', 'Z'))을 사용할 수 있습니다.

그래서 당신은 할 수 있습니다 사용을 명시 적으로 문자 범위 :

private static final CharMatcher CHAR_MATCHER_ASCII = 
    CharMatcher.inRange('0', '9') 
     .or(CharMatcher.inRange('a', 'z')) 
     .or(CharMatcher.inRange('A', 'Z')) 
     .or(CharMatcher.anyOf(" _.-")) // note space here 
     .precomputed(); 
+0

, 감사 –

0

구아바가 필요하지 않습니다. 문자열 #을 적절한 regex과 일치 시키십시오.

i..e

str.matches("[1-9a-zA-Z.\\-_ ]*"); 
1

사실 당신은 어떤 라이브러리가 필요하지 않습니다. 당신은 정규 자바로 그것을 할 수 있습니다.

정규식 : ([A-Za-z0-9\-\_\. ]+)

myStr.matches("([A-Za-z0-9\-\_\. ]+)"); 
0

[: alnum :] - 아파치 정규 표현식 API에 대한 영숫자 문자 내가 찾던 무엇