1

我想为仅数字(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

4 回答 4

4

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

^[0-9]+(\.[0-9]+){0,3}$
于 2012-10-10T13:09:10.203 回答
3

这是针对 C# 的吗?

Regex regex = new Regex(@"^\d+(\.\d+){0,3}$");
于 2012-10-10T13:06:29.110 回答
2

这个怎么样:

^\d+(\.\d+){0,3}$
于 2012-10-10T13:06:33.050 回答
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}$

IE

^ 字符串的开头

\d{4} 四位数

( 重复开始

\. 单个句点(转义以确保不被视为通配符)

\d{4} 4 位数

) 重复结束

{0,3} 重复 0 或 3 次

$ 字符串结尾

这将匹配

1234 或

1234.1234 或

1234.1234.1234 或

1234.1234.1234.1234

我读为符合要求。

于 2012-10-10T14:26:48.563 回答