2009-08-11 1 views
3

나는 여기에 내가 가진 무엇 ... 사용자 입력을 공백없이 정확히 4 개 문자를 만들려고 노력하고 있어요 ...4 문자가 필요하고 공백없이 정규 표현식을 만들려면 어떻게해야합니까?

.[^\s]{4} 

하지만 입력 한 모든는 정규식 일치하지 않는 것을 말한다

어디서 잘못 되었나요?

+0

시도/^ [^ \ S] {4} $/ –

+0

아니가 작동하지 않았다 ... 당신이 문자를 말할 때, 당신은 단지 알파 문자를 뜻 – Matt

+0

하지 숫자? 일치해야하는 것이 무엇인지와 내가 제공 한 정규 표현식이 4 문자의 긴 문자열과 일치해야하는지에 대한 예를들 수 있습니까? 그러나 공백이 아닌 한 문자는 일치합니다. 당신이 할 것입니다에만 알파 문자와 일치합니다 뭔가를 당신에게 만약/^ [^ \ S \ D] {4} $/ –

답변

14

이유가 앞에 추가 .? "4 개의 비 공백"이 계산되기 전에 별도의 문자와 일치합니다.

당신은 아마도 그래서, 문자열의 시작 부분과 끝 부분에 바인딩 할

:

^[^\s]{4}$ 
+1

없음 이해 : [^ \ S]는 [\ S] – Kelsey

+0

@Kelsey 여분의 이유 – Powerlord

+0

@Kelsey과 동일하지 : 문자열의 시작 부분에 ^는 단지 문자열의 시작 부분과 일치하는 것을 의미 , 마지막에 $는 문자열의 끝과 만 일치 함을 의미합니다. – Amy

9

\S이 아닌 복잡하게 만드는 경우 \s이 아니므로 공백과 일치하지 않아야합니다. 나는 이것이 당신을 위해 일해야한다고 생각 : 솔루션의

^[\S]{4}$ 

정의 :

^- 자본 'S'는 어떤 공백

에게 의미 - 가

은 [/ S]를

시작 {4} - 4 번 일치

$ - 문자열 끝

+1

+1 좋은 설명! –

1
\S{4} 

4 공백이 아닌 문자와 일치합니다. C# regex를 사용하는 경우 Expresso을 적극 권장합니다.

+0

문제는 시작 및 끝 비트를 제외했기 때문에 4자를 초과하는 텍스트도 일치시키기 때문입니다. 그는 정확히 4자를 원합니다. – Kelsey

관련 문제