이 정규식을 사용하여 텍스트 상자에서 과학 표기법의 유효성을 검사하지만 작동하지 않습니다. 이것은 아무 것도 입력 할 수 없습니다.누군가이 정규식이 작동하지 않는 이유를 말해 줄 수 있습니까?
regex = new Regex("[-+]?(0?|[1-9][0-9]*)(\\.[0-9]*[1-9])?([eE][-+]?(0|[1-9][0-9]*))?");
미리 감사드립니다.
이 정규식을 사용하여 텍스트 상자에서 과학 표기법의 유효성을 검사하지만 작동하지 않습니다. 이것은 아무 것도 입력 할 수 없습니다.누군가이 정규식이 작동하지 않는 이유를 말해 줄 수 있습니까?
regex = new Regex("[-+]?(0?|[1-9][0-9]*)(\\.[0-9]*[1-9])?([eE][-+]?(0|[1-9][0-9]*))?");
미리 감사드립니다.
실제로이 작업을 수행하고 싶으십니까?
여기 RegexBuddy에서 스크린 샷입니다 :
내가 RegexBuddy를 좋아하는만큼, 이것은 정규 표현식 자체보다 읽기가 더 어렵다. –
문제는 정규 표현식은 빈 문자열과 일치한다는 것입니다. 쉬운 해결책은 앞에 ^
을 추가하고 끝에는 $
을 추가하여 전체 입력 문자열이 정규 표현식과 일치해야합니다.
var numbers = new[] {
"0", "1", "01", "+1", "-1", "+0", "-0", "1.9", "1.09", "1.90", "1e0", "1e01", "1e10"
};
var regex = new Regex("^[-+]?(0?|[1-9][0-9]*)(\\.[0-9]*[1-9])?([eE][-+]?(0|[1-9][0-9]*))?$");
var valid = numbers
.Select(n => regex.Match(n))
.Where(m => m.Success)
.Select(m => m.Value);
다음에 발생합니다 valid
의 요소를 인쇄 :
0
1
+1
-1
+0
-0
1.9
1.09
1e0
1e10
공지 사항 01
, 1.90
및 1e01
이 일치하지 않는 방법 그러나 나는 추측 여기
다음은 매우 유용하다고 생각되는 또 다른 테스터입니다. 지수를 캡처하는 동안 과학 표기법이 포함 된 부동 소수점 숫자를 찾으려면 [- +]? [0-9] *. [0-9] + ([eE] [- +]? [0-9] +)?
[-+]?(0|[1-9])[0-9]*([.][0-9]*)?([eE][-+]?(0|[1-9])[0-9]*)?
당신이 원하는 것을 다소 가까운 ....하지만 당신은 당신이 통과 할 것으로 예상 표현의 테스트 세트를 준 경우 어쩌면 도움이 될 것이다 (http://www.regular-expressions.info/floatingpoint.html에서)/
당신이 Darek Slager의를 사용하여 시도 되세요 실패 표현식 문제를 해결하는 .NET Regex 테스터? http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx –
전달해야 할 사항과 전송해서는 안될 내용을 게시 한 경우 도움이 될 수 있습니다. – RobinGower
+ 실제로 정규 표현식을 사용하는 방법의 예 - 일치하지 않는 문자가 있는지 또는 전체 문자열이 일치해야하는지 테스트하고 있습니까? – Dexter