2009-12-03 2 views
-1

문자열에 공백이나 특수 문자를 포함하면 안됩니다. a-z, A-Z, 0-9, 밑줄 및 마침표 만 사용할 수 있습니다.자바 정규식 도움말

어떻게해야합니까?

업데이트 :
게시 된 모든 솔루션이 저에게 효과적이었습니다.

도움을 주신 모든 분들께 감사드립니다.

+2

은 숙제 문제와 비슷합니다. – Russell

+2

나는 이것이 포스터가 배울 좋은 모범이 될 것이라고 생각한다. 너 뭐 해봤 니? 코드를 게시하십시오. 나는 사람들이 포스터에 의한 어떠한 노력도 보지 않고 피드를 숟가락으로 뽑아내는 것을 놀라게한다. 이상한 포럼에 숙제에 관한 질문이 가득한 것은 당연합니다. – camickr

+0

나는 아주 좋은 Eclipse Regexp 플러그인을 추천합니다 : http://myregexp.com/eclipsePlugin.html –

답변

3
if (!myString.matches("^[a-zA-Z0-9._]*$")) { 
    // fail ... 
} 

또는 당신은 단순히 세트 일치하지 않는 모든 문자를 삭제할 수

+1

생각합니다. 단어 문자에 \ w를 사용하고 숫자에 \ d를 사용하면 더 읽기 쉽습니다. –

+1

\ w는 영숫자 + _ – user105033

+0

입니다. 요구 사항에 따라 외국어 문자를 거부해야하므로 문자 집합을 추측하여 재앙을 초래할 수 있습니다. –

0

"[\\w,]+"을 사용할 수 있습니다 [a-zA-Z0-9_.]. 또는 세트에없는 문자를 유효한 문자 (예 : 밑줄)로 바꿀 수 있습니다. 마지막으로 허용 된 세트의 문자만으로 구성된 문자열을 모두 거부 할 수 있습니다.

+0

숫자가 \ w에 포함되어 있다고 생각하지 않습니다 ... –

+2

@ 토마스 오웬스 : 그렇게 생각하지는 않을지 모르지만 그들은 다음과 같습니다 :'\ w \t 단어 문자 : [a-zA-Z_0-9]'- java.util.regex.Pattern 용 JavaDoc – Powerlord

+0

@ 토마스 오웬스 : 숫자 *는'\ w '에 포함됩니다. 위의 정규 표현식의 문제점은 OP에 따라 허용 된 문자가 아니고 허용되어야하는'.'을 허용하지 않는','를 포함한다는 것입니다. 또한, 정규식은 처음에는 앵커가 아니며 각각'^'및'$'로 끝납니다. – Asaph

0

트릭을 할해야 \w 문자 클래스 ([a-zA-Z_0-9] 속기)

if (!myString.matches("^[\\w.]*$")) { 
    // fail ... 
} 
3

다른 솔루션 : 그것은 대신 그들을 검출 원하지 않는 문자를 제거

text = text.replaceAll("[\\w.]", ""); 

. Sun's website에서

:

\w A word character: [a-zA-Z_0-9] 
+3

+1은 문서에 대한 링크를 포함합니다. 적어도 포스터는 뭔가를 배울 수있는 기회를 가지므로 더 많은 숟가락 먹이를 찾아 돌아올 필요가 없습니다. – camickr

3

내가이 입력 완료 시간에 의해 확신합니다, 당신은 당신이 답변을받은 것입니다. 여기에 몇 가지 진정한 조언이 있습니다. 시간 (시간 정도)을 가지고 정규 표현식의 기본을 배우십시오.

'현실 세계'문제의 해결책에 얼마나 자주 나타나는지 놀랄 것입니다.

큰 시험 자원 ->http://gskinner.com/RegExr/

0

당신은 정규 표현식 "모든 문자는 다음 중 하나 여야합니다"만들거나 당신이 싫어하는 문자의 전혀하고있는 경우 단순히 요청할 수 있습니다 그래서 문자열을 거부하는 경우 . 나는 후자가 나중에 쓰고 이해하는 것이 가장 쉬울 것이라고 믿는다.