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

时间:2011-03-28 10:06:32

标签: regex

我需要一个正则表达式来验证two or one数字,然后是,.以及two or one个数字。

所以,这些是有效的输入:

11,11  
11.11  
1.1  
1,1  

6 个答案:

答案 0 :(得分:64)

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

编辑:更新以满足新要求(评论);)
编辑:根据布莱恩删除不必要的限定符

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

答案 1 :(得分:19)

为了以正则表达式的形式表示单个数字,您可以使用:

  

[0-9]或\ d

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

  

[0-9] *:星号表示零位或多位

     

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

     

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

     

[0-9] {0-9}:{N-M} 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}表示二进制字节

然后,如果你想添加一个或一个。你会用的符号:

  

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

您也可以在可能的值之间进行选择

  

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

并且您只需要将这些部分连接在一起,因此,如果您想要表示1位或2位数字后跟逗号或句点,然后再加上两位数字,您可以按如下方式表达: >

  

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

另请注意,C ++字符串中的正则表达式字符串必须双击,因此每个\变为\\

答案 2 :(得分:14)

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

*表示“零或多”,因此\d*[0-9]*表示“零或多个数字”。 ?表示“零或一”。这些限定词都不是唯一的。大多数语言也允许您使用{m,n}表示“m和n之间”(即:{1,2}表示“介于1和2之间”)

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

将所有这些放在一起你可以使用:

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

含义,一个或两个数字\d{1,2},后跟一个组(...)?中的零个或一个组成的点或逗号后跟一个或两个数字[\.,]\d{1,2}

答案 3 :(得分:11)

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

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

我知道最短的正则表达式

^\d\d?[,.]\d\d?$

^和$表示输入字符串的开始和结束(如果没有这部分,则字符串123.45之类的23.45将被匹配)。 \ d表示数字,\ d是数字?表示可选数字,[,.]表示点或逗号。工作示例(当您单击左侧菜单>工具>代码生成器时,您可以为9种流行语言之一生成代码,例如c#,js,php,java等)here