C# 多条件正则表达式

C# 多条件正则表达式,c#,regex,C#,Regex,我正试图写一个用于检查数字的正则表达式 我应该能够确定以下内容: 999 99.99 99,99 99 9/9 但不是接下来的9900万、990亿、99美元 所以我想这可能有用: stringrule1=@“\b[0-9]+(?(.|,|\n){0,1}[0-9]+)\b” [0-9]+第一部分说:我需要1个或更多数字 (?(.|,|\n){0,1}[0-9]*)在第二部分中,我的意图是表达一个条件: 如果第一部分后面有一个点、逗号或空格,那么我需要在点、逗号或空格后面有一个或多个数字。但是

我正试图写一个用于检查数字的正则表达式

我应该能够确定以下内容:

  • 999
  • 99.99
  • 99,99
  • 99 9/9
但不是接下来的9900万、990亿、99美元

所以我想这可能有用:
stringrule1=@“\b[0-9]+(?(.|,|\n){0,1}[0-9]+)\b”

[0-9]+
第一部分说:我需要1个或更多数字

(?(.|,|\n){0,1}[0-9]*)
在第二部分中,我的意图是表达一个条件:


如果第一部分后面有一个点、逗号或空格,那么我需要在点、逗号或空格后面有一个或多个数字。但是,由于我对正则表达式了解不多,所以我遇到了一个运行时异常。

我不太确定您希望如何处理最后一种情况,因为正如我在评论中所说,您的示例中有一个空格。但假设这应该是一个断线,我相信这样的事情应该会奏效

(\b\d+(\.|,|\/)?\d+\b)[^$]
细分:

(
\断字
\d+任何数字字符(相当于[0-9]),匹配一次或多次
(\.\,\/)?句点(转义)、逗号或斜杠(转义),匹配零或一次。
\d+任何数字字符(相当于[0-9]),匹配一次或多次
\断字
)
[^$]避免最后一种情况,即99$

我已经尽可能地对此进行了测试。

在上一个案例中,数字中有一个空格。这是故意的吗?你怎么从两个不同的数字中判断呢?这不是断线。假设它是一个分数表示法,比如1.5,1/2我被你的例子搞糊涂了,首先你给出了4个有效的符号,然后你陈述了排除,好像有什么暗示了它们?无论如何,这个正则表达式包含了您想要的:
\b[1-9][0-9]*([,.][0-9]+|*[1-9][0-9]*/[1-9][0-9]*)?\b
。如果您想匹配数值范围,请参阅Codeplex上的RegexNumRangeGen。您会得到什么运行时异常?使用什么输入?请注意,斜杠不需要转义序列。