문제는 string pattern = "[A-Za-z]*";
도 있기 때문에 *
정량의 영 문자와 일치하는 것입니다 : 당신이 LINQ extension methods을 사용할 수 /하고자하는 경우 OU도이 방법을 단축 할 수 있습니다.
만 문자열의 편지가 있는지 확인하려면
, 단지
string pattern = "[A-Za-z]";
를 사용하지만, 물론 이것은 단지 ASCII 문자와 일치한다. 더 나은 방법은 재산 "편지"와 유니 코드 코드 포인트를 일치 유니 코드 속성
string pattern = @"\p{L}";
\p{L}
을 사용하는 것입니다.
참고 : 나는 당신이 단지 숫자 확인되지 않는다는 것을 알고 있습니다 희망
, 그 검사 입력에 편지가있는 경우. 이것은 물론 문자가 아닌 숫자가 아닌 문자를 허용합니다!
당신이 @ musefan의 대답을 이동하거나 정규식이 방법
string inputString;
string pattern = @"^\p{Nd}+$";
Regex re = new Regex(pattern);
inputString = Console.ReadLine();
while (!re.Match(inputString).Success) {
Console.WriteLine("Please stick to numerals");
inputString = Console.ReadLine();
}
Console.WriteLine(inputString);
\p{Nd}
또는 \p{Decimal_Digit_Number}
사용해야합니다 단지 숫자에 대한 확인하려면 다음 표의 문자의 서체를 제외한 모든 스크립트에서 구를 통해 숫자 제로.
유니 코드 속성에 대한 자세한 내용은 www.regular-expressions.info/unicode을 참조하십시오.
string pattern = @"\P{Nd}";
...
while (re.Match(inputString).Success) {
다음은, \P{Nd}
에만 패턴을 변경해야 \p{Nd}
의 부정이며, 경우에 일치 :이 "없는 숫자"입력에이 경우
다음 대안은 확인하는 것입니다 입력에 하나의 비 숫자가 있습니다.
''^ [0-9] + $ "'(내 RegEx가 좋지는 않지만 그래도 문제가되지는 않을지라도) 문자를 찾기보다는 모든 숫자를 검사하는 것이 전체적으로 선호 될 수도 있습니다. – musefan
@musefan 자리 대체에 대한 검사와 함께. – stema