我需要一个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+

然而,这也允许&quot; -12 -2 / -3&quot; ,或&quot; 1 -1 / 2&quot; 之类的东西很有意义。

ETA:您的原始正则表达式也适用。它只是缺少字符串开头和结尾的锚点(分别是 ^ $ )。添加它们可以使它正常工作。

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

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

(:?-?\d+ )?

和小数部分:

-?\d+/-?\d+

我们需要匹配完整的字符串;这样:

^(:?-?\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:您的原始正则表达式也适用。它只是缺少字符串开头和结尾的锚点(分别是 ^ $ )。添加它们可以使它正常工作。

其他提示

我只是有类似的要求,但我也希望匹配十进制数字。 我想出了以下正则表达式

^-?(?<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