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

本文关键字:正则表达式 条件 | 更新日期: 2023-09-27 18:30:32

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

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

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

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

所以我认为这可能会起作用: string rule1 = @"'b[0-9]+(?(.|,|'n){0,1}[0-9]+)'b";

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

(?(.|,|'n){0,1}[0-9]*) 在第二部分中,我打算表达一个条件:

如果点、逗号或空格

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

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

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

('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$

我已经在这里尽可能地测试了这一点。