2014-02-23 2 views
0

정규식을 처음 사용하므로 쉽게 알아볼 수 있기를 바랍니다. 기본적으로 사용자 입력이 글자 나 숫자가 포함 된 단어 나 구문과 일치하는지 확인하려고합니다.
([a-zA-Z0-9]+)|(([a-zA-Z0-9]+\s+[a-zA-Z0-9]+)+)\s* 희망이 너무 지저분하지 않아서, 모든 도움이 매우 감사하겠습니다. 그것은 "사람은 하나"와 같은 문구에 대해서는 작동하지만 "사람은 나를 괴롭히는 사람"에 대해서는 작동하지 않습니다.정규식을 사용하여 사용자 입력 확인

+0

아마 당신은 단순히 단순화한다 사용 :'([\ w \의 ] +)' – MElliott

+0

여기에 훌륭한 리소스가 있습니다. http://www.regular-expressions.info/ –

답변

2

그것은 당신의 문구 모두 작동하고 정규식 첫 번째 ([a-zA-Z0-9]+)로, 두 번째 교대를 평가하지 않으므로 (here 참조)마다 일치, the 두 번 캡처합니다. 당신이 원하는 모든 일치 a word or phrase containing letters or numbers 경우 나는 많은 정규식-엔진에서 _\w 경기로, [a-zA-Z0-9] 대신 \w를 사용하지 않습니다

(?:[a-zA-Z0-9]+\s?)+ 

demo @ regex101

내가 사용하는 것, 너무.

설명 :

그냥 문자 나 숫자를 확인하려면
(?:   #start of non-capturing group 
    [a-zA-Z0-9] #character class matching one of a-z, A-Z and 0-9 
    +   #between one and unlimited times 
    \s?   #optional whitespace (includes tabs newlines) 
)    #end of non-capturing group 
+0

the? 이 Regex Basti에서 사용 된 마크? 나는 정규 표현식에 대해서도 항상 힘든 시간을 보냈다. –

+0

@AlvinBunk'()'는 일반적인 [캡쳐 그룹] (http://www.regular-expressions.info/brackets.html) 인 반면,'(? :)'는 캡쳐되지 않은 그룹이므로 그룹 만 토큰을 포착하지 마십시오. –

+0

위대한 질문입니다. OP 질문에 대한 답변입니다. –

0

, 당신은 간단하게 수행 할 수 있습니다

String regex = "([a-z]|[A-Z]|[0-9])+"; 
관련 문제