정규 표현식을 전혀 사용하지 않았으므로 문제 해결에 어려움이 있습니다. 포함 된 문자열이 모든 숫자 일 때만 정규 표현식이 일치하도록하고 싶습니다. 그러나 아래 두 가지 예에서는 모든 숫자와 “1234 = 4321″과 같은 등호를 포함하는 문자열과 일치합니다. 나는이 행동을 바꿀 수있는 방법이 있다고 확신하지만, 내가 말했듯이 정규 표현식으로 많은 것을 한 적이 없습니다.
string compare = "1234=4321";
Regex regex = new Regex(@"[\d]");
if (regex.IsMatch(compare))
{
//true
}
regex = new Regex("[0-9]");
if (regex.IsMatch(compare))
{
//true
}
중요한 경우 C # 및 .NET2.0을 사용하고 있습니다.
답변
시작 및 끝 앵커를 사용하십시오.
Regex regex = new Regex(@"^\d$");
"^\d+$"
두 자리 이상 일치해야하는 경우 사용하십시오 .
참고 "\d"
일치 [0-9]
와 동부 아라비아 숫자와 같은 다른 숫자 문자 ٠١٢٣٤٥٦٧٨٩
. "^[0-9]+$"
일치를 아라비아 숫자 0-9로 제한하는 데 사용하십시오 .
숫자 이외의 숫자 표현을 포함해야하는 경우 (예 : 10 진수 값과 같은) 정규 표현식으로 숫자를 구문 분석하는 @tchrist 의 포괄적 인 안내서를 참조하십시오 .
답변
정규식은 숫자가 포함 된 것과 일치하며 앵커를 사용하여 전체 문자열을 일치시킨 다음 하나 이상의 숫자를 일치시킵니다.
regex = new Regex("^[0-9]+$");
(가) ^
하여 문자열의 시작을 고정합니다, (가) $
문자열의 끝을 고정 것이며,이 +
하나를 일치 이상 (이 경우의 수)를 앞에 무슨.
답변
소수점과 천 개의 마커를 견뎌야하는 경우
var regex = new Regex(@"^-?[0-9][0-9,\.]+$");
숫자가 음수가 될 수 있으면 “-“가 필요합니다.
답변
전체 문자열과 일치하지 않는 “일치”를 찾기 때문에 일치합니다. 문자열의 시작과 끝을 구체적으로 찾도록 regexp를 변경하여이 문제를 해결할 수 있습니다.
^\d+$
답변
아마도 내 방법이 도움이 될 것입니다.
public static bool IsNumber(string s)
{
return s.All(char.IsDigit);
}
답변
이것은 정수와 10 진수로 작동합니다. 숫자에 코마 천 구분 기호가 있으면 일치하지 않습니다.
"^-?\\d*(\\.\\d+)?$"
이것과 일치하는 일부 문자열 :
894
923.21
76876876
.32
-894
-923.21
-76876876
-.32
그렇지 않은 문자열 :
hello
9bye
hello9bye
888,323
5,434.3
-8,336.09
87078.
답변
^ \ d + $, 영어에서 “문자열의 시작”, “1 자리 이상”, “문자열의 끝”