2017-04-13 3 views
0

Visual Studio에서 M 또는 F 문자로 텍스트 상자의 유효성을 검사하려고합니다. 모든 정규식이 올바르게 작동하는 비슷한 방식으로 정규식을 사용하여 몇 가지 다른 유효성 검사가 있습니다. 그러나 이것으로 텍스트 상자에 아무 문자 나 사용할 수 있습니다. 이 코드의 문제점은 무엇입니까?Regex Visual Studio 특정 문자

public static bool IsGender(string gender) 
{ 
    bool validGender = true; 
    string _genderRegEx = @"^\:|m|M|f|F|$"; 
    if ((!Regex.Match(gender, _genderRegEx).Success)) 
    { 
     MessageBox.Show("Gender must be either M or F."); 
     validGender = false; 
    } 
    return validGender; 
} 

답변

2

정규식이 잘못되었습니다. 당신은이 :

@"^\:|m|M|f|F|$" 

| 기호는 부울 OR를 의미한다. 정규식의 일부를 그룹화 할 괄호가 없기 때문에 ^\:으로 가고 $은 그 자체입니다. 그 결과, 귀하의 정규식의 일치 다음

  • 문자열의 문자열 (^) 플러스 :
  • m 또는 M
  • f 또는 F
  • 끝의 시작 ($).

모든 문자열에는 끝이 있으므로 모든 문자열이 일치합니다.

원래 올바른 정규식은 다음과 같습니다

@"^[mMfF]$" 

이 정확히 다음, 문자열 (^)의 시작과 일치하는 문자열의 끝 (다음 m 중 하나 M, f, 또는 F, $).

+0

완벽한. 고맙습니다. 시간이 만료되면 올바르게 표시됩니다. –