我想只为数字(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
我知道这很难,但非常感谢任何帮助。
答案 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
我认为这符合要求。