2012-11-04 9 views
0

정규식에 익숙하지 않아 새로운 Regex를 작성하는 데 도움이됩니다. 이들 위해 일해야합니다RegEx 포트 열거 형 확인

28 
28,57,130 
13-18 
13,18-57,65 
44-56,50-130,150,180-213 
12-25,28 
1024-8000,27000-30000 
1024-65535 

그것은 더 복잡하게 만들 것 이것에 대한 regex를 사용

15,13 // 13 is less than 15 
15-11 // 11 is less than 15 
15-18,10 
15-18,20,11-130 // because of 11 
0 // port number 0 is reserved and can't be used 
11-180,250,65536 // it should be less than 65535 
+4

Regexes는 적합하지 않으며 특히 두 번째 목록에있는 숫자의 비교. 쉼표 및/또는 대시로 구분 된 숫자가 있는지 확인하려면 regexes가 좋습니다. –

+0

@Daniel Persson, 이제 알았습니다. 변환을 사용해야합니다. –

답변

2

작동 shoudn't ..

을 대신 regex를 사용하는 당신이 그것을 parse 수 있습니다 like

bool matchIt(string input)//returns true|false for a match 
{ 
    if(input=="0")return false;//cuz you dont want to match 0 
    string[] parts=input.Split(new char[] { ',','-' }, StringSplitOptions.None);//split them 
    int prev=int.Parse(parts[0]); 
    foreach(string s in parts) 
    { 
     if(prev>int.Parse(s))return false; 
     prev=int.Parse(s); 
    } 
    return true; 
} 
+0

Split 입력 매개 변수에서 ",", "-"이어야합니다. (너무 작아서 편집 할 수 없습니다 ...) –

+0

@DanielPersson 편집 됨 ... thxx ...;) – Anirudha