2012-02-04 3 views
1

어리석은 문제로 붙어 있습니다. 나는 사용자가 제한된 양의 글자 (ABCDEFG)를 입력 할 수있는 입력 필드를 가지고있다. 문제는 다음과 같습니다. 사용자가 AA, CCC, EEE, GGG가 아닌 입력의 단일 하위 시퀀스에 3 개 이상의 A, C, E 및 G 문자를 포함 할 수 없도록하고 싶습니다. 두 번째 것은 첫 번째 것과 거의 같습니다 : 하나의 하위 시퀀스에 1 B, D, F가 넘지 않습니다 : BB, DD, FF 없음. 이 두 규칙은 어떻게 든 결합됩니다.정규식 : 시퀀스

예를 들어, AABFGECC가 유효합니다. GEFFFAABG이 (가) 유효하지 않습니다.

희망, 도와주세요! 고맙습니다!

피씨 중요하면, 저는 Visual Basic으로 응용 프로그램을 작성하고 있습니다. 그러나 나는 이것이 중요하지 않다고 생각한다. 당신이 영리 다시 참조를 사용할 수 있지만

+0

'AAA'는 실제로 "2 이상"이 아니라 3 ...이 VB.Net은, 그런데? – Kobi

답변

1

, 간단한 해결책은 블랙리스트에 사용하는 잘못된 시퀀스입니다 negative look ahead :

^(?!.*(?:AAA|CCC|EEE|GGG|BB|DD|FF))[A-G]*$ 

논리적으로, 즉 이들 7 개 유효하지 않은 시퀀스를 가지고있다 동일 목록 및 문자열을 검사하는 중 하나를 포함하지 않습니다, 또한 당신에게 좋은 대안을 제공합니다.

+0

BBBBBBBBBBBBBBBBBBBBBBB를 쓰면 어떻게 될까요? 통과할까요? 그렇게해서는 안됩니다. – Dmitri

+0

@Dmitri - "BB"가 포함되어 있으므로 그렇지 않습니다. 부정적 미리보기가 작동하는 방식을 살펴보십시오. * "BB"를 찾으면 문자열과 일치하지 않습니다 *. – Kobi

+0

아! 너의 의도를 알 겠어. 흥미 롭 군. – Dmitri

2

피하려는 사례와 일치하는 표현을 작성하고 대신 입력이 일치하지 않는지 확인하십시오. 이렇게 :

([^A-F]|AAA|CCC|EEE|GGG|BB|DD|FF) 
+0

감사! 이제 어떻게 해결되는지 이해합니다! – Dmitri