문제

분수 또는 정수 및 분수에 대한 CLR Regex가 필요합니다.

1/2 맞다12 2/3 맞습니다

마이너스 부호는 숫자 직전에 팝업 할 수 있습니다.

나는 처음 생각했다 -?([0-9]* )?-?[0-9]+\/-?[0-9]+ 그러나 그것은 허용되는 것 같습니다 2/7 12 예를 들어.

도움이 되었습니까?

해결책

글쎄, 그 리그는 (선택 사항) 정수의 두 부분으로 될 것입니다.

(:?-?\d+ )?

그리고 분수 부분 :

-?\d+/-?\d+

그리고 우리는 완전한 문자열과 일치해야합니다. 그래서:

^(:?-?\d+ )?-?\d+/-?\d+$

조금 테스트 :

PS> $re=[regex]'^(:?-?\d+ )?-?\d+/-?\d+$'
PS> "1/2","12 1/2","-12 2/3","-5/8","5/-8"|%{$_ -match $re} | gu
True

그러나 이것은 허용됩니다 "-12 -2/-3" 또한, 또는 같은 것들 "1 -1/2" 그다지 말이되지 않습니다.

ETA : 원래 Regex도 작동합니다. 줄의 시작과 끝을위한 앵커가 부족했습니다 (^ 그리고 $, 각각). 그것들을 추가하면 올바르게 작동합니다.

다른 팁

방금 비슷한 요구 사항이 있었지만 소수점 숫자도 일치하고 싶었습니다. 나는 다음과 같은 동정인을 생각해 냈다

^-?(?<WholeNumber>\d+)(?<Partial>(\.(?<Decimal>\d+))|(/(?<Denomiator>\d+))|(\s(?<Fraction>\d+/\d+)))?$

또는 당신이 이름을 지정하지 않으려면 이것

^-?\d+((\.\d+)|(/\d+)|(\s\d+/\d+))?$

유효성 검사에서 소수점 번호를 제거하려면 단축됩니다.

^-?\d+((/\d+)|(\s\d+/\d+))?$

이것이 누군가를 돕기를 바랍니다!

정수가 아닌 단일 분수에 대해서만 시도해보십시오.

/^\d{1}\/?\d{1}$/
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top