Regex 分数的CLR正则表达式

Regex 分数的CLR正则表达式,regex,clr,Regex,Clr,我需要一个CLR正则表达式来表示分数或整数和分数,其中 1/2正确 12 2/3也正确 减号可以在任何数字之前弹出 我第一次提出了-?([0-9]*)?-?[0-9]+\/-?[0-9]+,但这似乎也允许2/712。好吧,正则表达式将分为两部分,(可选)整数: (:?-?\d+ )? 以及小数部分: -?\d+/-?\d+ 我们需要匹配完整的字符串;因此: ^(:?-?\d+ )?-?\d+/-?\d+$ 测试一点: PS> $re=[regex]'^(:?-?\d+ )?-?\d+

我需要一个CLR正则表达式来表示分数或整数和分数,其中

1/2
正确
12 2/3
也正确

减号可以在任何数字之前弹出


我第一次提出了
-?([0-9]*)?-?[0-9]+\/-?[0-9]+
,但这似乎也允许
2/712

好吧,正则表达式将分为两部分,(可选)整数:

(:?-?\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”
这样没有多大意义的东西


预计到达时间:您原来的正则表达式也可以使用。它只是缺少字符串开头和结尾的锚(
^
$
)。添加这些可以使它正常工作。

我有一个类似的要求,但我也想匹配十进制数。 我想出了下面的正则表达式

^-?(?<WholeNumber>\d+)(?<Partial>(\.(?<Decimal>\d+))|(/(?<Denomiator>\d+))|(\s(?<Fraction>\d+/\d+)))?$
要从验证中删除十进制数,它将被缩短为

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

希望这对别人有帮助

试试这个,只针对单个分数,而不是整数

/^\d{1}\/?\d{1}$/

tx,你是对的,1-1/2没有意义,使它更复杂:-1/2应该是可能的,但1-1/2不是。。
/^\d{1}\/?\d{1}$/