我想为仅数字(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-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-9]+(\.[0-9]+){0,3}$
这是针对 C# 的吗?
Regex regex = new Regex(@"^\d+(\.\d+){0,3}$");
这个怎么样:
^\d+(\.\d+){0,3}$
我不确定我是否同意接受的答案。我无法使接受的答案起作用。
据我了解,接受的答案是匹配的:-
^
字符串的开头
[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
我读为符合要求。