正则expression式只有数字和点或逗号

我需要一个正则expression式来validationtwo or one数字,或者. 并再次two or one数字。

所以,这些是有效的input:

 11,11 11.11 1.1 1,1 
 \d{1,2}[\,\.]{1}\d{1,2} 

编辑:更新,以满足新的要求(评论);)
编辑:删除不必要的qtfier按照布赖恩

 ^[0-9]{1,2}([,.][0-9]{1,2})?$ 

\d表示大多数语言的数字。 您也可以在所有语言中使用[0-9] 。 对于“句号或逗号”,请使用[\.,] 。 根据你的语言,你可能需要更多的反斜杠,基于你如何引用expression式。 最终,正则expression式引擎需要看到一个反斜杠。

*表示“零或多个”,所以\d*[0-9]*表示“零个或多个数字”。 ? 意味着“零或一”。 这些限定符都不意味着一个。 大多数语言还允许使用{m,n}表示“在m和n之间”(即:{1,2}表示“在1和2之间”)

由于点或逗号和附加数字是可选的,你可以把它们放在一个组中,并使用? 量词表示该组的“零或一”。

把它们放在一起,你可以使用:

 \d{1,2}([\.,][\d{1,2}])? 

意思是一个或两个数字\d{1,2} ,然后是一个组(...)?零个或一个数字(...)? 由一个点或逗号后跟一个或两个数字[\.,]\d{1,2}

 \d{1,2}[,.]\d{1,2} 

\ d表示数字,{1,2}部分表示前一个字符(本例中为\ d)的1或2,[,。]部分表示逗号或点。

为了以正则expression式的forms表示单个数字,您可以使用以下任一方法:

[0-9]或\ d

为了指定数字出现的次数,您将添加

[0-9] *:星号表示有零个或多个数字

{0-9] {2}:{N}表示N位

[0-9] {0,2}:{N,M} N位或M位

[0-9] {0-9}:{NM} N位至M位。 注意:对于无限表示,M可以留空

假设我想表示一个1到99之间的数字,我会这样表示:

[0-9] {1-2}或[0-9] {1,2}或\ d {1-2}或\ d {1,2}

或者让我们说我们正在使用二进制显示,显示一个字节大小,我们希望我们的数字在0和1之间,字节大小的长度为8,所以我们将它表示如下:

{0-1] {8}表示一个二进制字节

那么如果你想添加一个,或者一个。 您将使用的符号:

\, 要么 \。 或者您可以使用[。]或[,]

您也可以声明可能的值之间的select

[。,]表示点或逗号符号

而且你只需要连接在一起,所以在你想表示一个1或2位数的数字后跟一个逗号或一个句点,然后是两个数字的情况下,你可以如下表示:>

[0-9] {1,2} [,] \ d {1-2}

另请注意,C ++string内部的正则expression式string必须是双反斜杠,所以每个\变成\\

如果你想非常宽容,只需要两个逗号或点的最后一个数字:

 ^([,.\d]+)([,.]\d{2})$