正则表达式(正则表达式)问题

时间:2012-10-10 13:04:12

标签: regex

我想只为数字(0-9)后跟点构建一个正则表达式。这可以持续多达4次。诀窍是没有必要继续。

例如:

1234 is OK  
1234.1234 is OK  
1234.1234.1234 is OK  
1234.1234.1234.1234 is OK  

不行:

asdf NOT OK  
1234.. NOT OK 
1234..1234 NOT OK  
1234,-/etc. NOT OK  
123asd NOT OK  
1234.1234asd NOT OK  

我知道这很难,但非常感谢任何帮助。

4 个答案:

答案 0 :(得分:4)

如果我理解正确,这应该有效:

^[0-9]+(\.[0-9]+){0,3}$

答案 1 :(得分:3)

这是C#?

Regex regex = new Regex(@"^\d+(\.\d+){0,3}$");

答案 2 :(得分:2)

这个怎么样:

^\d+(\.\d+){0,3}$

答案 3 :(得分:0)

我不确定我是否同意接受的答案。我不能让接受的答案奏效。

据我所知,接受的答案是匹配: -

  

^字符串

的开头      

[0-9]+一个或多个数字0到9这也可以用短手代表\ d

     

(重复开始

     

\.一个句点(转义以确保不被视为外卡)

     

[0-9]+一个或多个数字0到9这也可以用短手代表\ d

     

)重复结束

     

{0,3}重复0或3次

     

$字符串结尾

因此我们可能匹配例如

1234.12.123456789.1234或

1234.12或

123.1.234或

1

我可能误解了一些东西,但这不符合SO的例子给出的规范。

不应该是

^\d{4}(\.\d{4}){0,3}$

  

^字符串

的开头      

\d{4}四位数

     

(重复开始

     

\.一个句点(转义以确保不被视为外卡)

     

\d{4} 4位

     

)重复结束

     

{0,3}重复0或3次

     

$字符串结尾

这将匹配

1234或

1234.1234或

1234.1234.1234或

1234.1234.1234.1234

我认为这符合要求。