具有多种条件的正则表达式

时间:2014-11-16 21:13:30

标签: c# regex

我正在尝试编写用于检查数字的正则表达式。

我应该能够识别以下内容:

  • 999
  • 99.99
  • 99,99
  • 99 9/9

但不是以下99M,99BN,99 $。

所以我认为这可行:  string rule1 = @"\b[0-9]+(?(.|,|\n){0,1}[0-9]+)\b";

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

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

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

1 个答案:

答案 0 :(得分:1)

我不确定你想如何处理最后一个案例,因为正如我在评论中所说,你的例子中有一个空格。但假设这应该是一个换行符,我相信这样的事情应该有用。

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

细分:

(
\b           Word break
\d+          Any digit character (equivalent to your [0-9]), matched one or more times
(\.|,|\/)?   A period (escaped), comma, or slash (escaped), matched zero or one time.
\d+          Any digit character (equivalent to your [0-9]), matched one or more times
\b           Word break
)
[^$]         Avoid the last case, of 99$

我已经对here进行了测试。