C# 特殊情况的正则表达式

C# 特殊情况的正则表达式,c#,regex,C#,Regex,我需要为以下场景创建一个正则表达式 它只能有数字和一个点或逗号 第一部分可以有一到三个数字。 第二部分可以是点或逗号。 第三部分可以有一到两个数字 有效的场景是 123,12 123.12 123,1 123 12,12 12.12 1,12 1.12 1,1 1.1 1 到目前为止,我想出了这个表达 \d{1,3}(?:[.,]\d{1,2})? 但效果不好。例如,输入为11:11时标记为有效。您需要在表达式周围加上: ^\d{1,3}(?:[.,]\d{1,2})?$ ^将匹配字符串的

我需要为以下场景创建一个正则表达式

它只能有数字和一个点或逗号

第一部分可以有一到三个数字。 第二部分可以是点或逗号。 第三部分可以有一到两个数字

有效的场景是

123,12
123.12
123,1
123
12,12
12.12
1,12
1.12
1,1
1.1
1
到目前为止,我想出了这个表达

\d{1,3}(?:[.,]\d{1,2})?
但效果不好。例如,输入为11:11时标记为有效。

您需要在表达式周围加上:

^\d{1,3}(?:[.,]\d{1,2})?$
^
将匹配字符串的开头

$
将匹配字符串的结尾

如果缺少这些锚点,它将部分匹配字符串,因为最后一部分是可选的,这意味着在“11:11”中,它可以匹配冒号之前的数字,第二个匹配将匹配冒号之后的数字。

您需要在表达式周围加上:

^\d{1,3}(?:[.,]\d{1,2})?$
^
将匹配字符串的开头

$
将匹配字符串的结尾


如果这些锚缺失,它将部分匹配字符串,因为最后一部分是可选的,这意味着在“11:11”中,它可以匹配冒号之前的数字,第二个匹配将匹配冒号之后的数字。

尝试使用
^
$

^\d{1,3}(?:[.,]\d{1,2})?$
^
匹配必须从字符串或行的开头开始

$
匹配必须出现在字符串末尾或行或字符串末尾的
\n
之前


尝试使用
^
$

^\d{1,3}(?:[.,]\d{1,2})?$
^
匹配必须从字符串或行的开头开始

$
匹配必须出现在字符串末尾或行或字符串末尾的
\n
之前