正则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})$