質問

分数または整数と分数のCLR正規表現が必要です

1/2 は正しい 12 2/3 も正しい

およびマイナス記号は、任意の数の直前にポップアップできます。

最初に-?([0-9] *)?-?[0-9] + \ /-?[0-9] + を思いつきましたが、< code> 2/7 12 も例です。

役に立ちましたか?

解決

まあ、その正規表現は2つの部分、(オプションの)整数になります:

(:?-?\d+ )?

および小数部:

-?\d+/-?\d+

そして、完全な文字列と一致する必要があります。 so:

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

少しテスト:

PS> $re=[regex]'^(:?-?\d+ )?-?\d+/-?\d+

ただし、これにより、&quot; -12 -2 / -3&quot; 、または&quot; 1 -1 / 2&quot; のように、非常に理にかなっています。

ETA:元の正規表現も機能します。文字列の開始と終了のアンカーが不足していました(それぞれ ^ $ )。それらを追加すると正しく動作します。

PS> "1/2","12 1/2","-12 2/3","-5/8","5/-8"|%{

まあ、その正規表現は2つの部分、(オプションの)整数になります:

(:?-?\d+ )?

および小数部:

-?\d+/-?\d+

そして、完全な文字列と一致する必要があります。 so:

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

少しテスト:

<*>

ただし、これにより、&quot; -12 -2 / -3&quot; 、または&quot; 1 -1 / 2&quot; のように、非常に理にかなっています。

ETA:元の正規表現も機能します。文字列の開始と終了のアンカーが不足していました(それぞれ ^ $ )。それらを追加すると正しく動作します。

-match $re} | gu True

ただし、これにより、&quot; -12 -2 / -3&quot; 、または&quot; 1 -1 / 2&quot; のように、非常に理にかなっています。

ETA:元の正規表現も機能します。文字列の開始と終了のアンカーが不足していました(それぞれ ^ $ )。それらを追加すると正しく動作します。

他のヒント

同様の要件がありましたが、10進数も一致させたかったのです。 次の正規表現を思いつきました

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

または名前付きグループが必要ない場合はこれだけ

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

検証から10進数を削除するには、短縮されます

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

これが誰かを助けることを願っています!

これを試してください。整数ではなく単一の小数部のみ

/^\d{1}\/?\d{1}$/
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top