문제
분수 또는 정수 및 분수에 대한 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}$/
제휴하지 않습니다 StackOverflow