我无法构建正确的正则表达式。
有效:
- 1.1.1
- 1.1-1
- 1-1.1
- 1-1-1
- 1-1
- 1.1
无效:
1- ..1
- 1. 1-
- -1
- 1-
到目前为止,我得到了
^[0-9]+[0-9.-][0-9]+$
感谢您的帮助
^[0-9]+[0-9.-][0-9]+$
模式匹配与模式完全匹配的字符串:1 个或多个数字 ([0-9]+
(, 一个数字或.
或-
([0-9.-]
(,然后是 1 个或多个数字 ([0-9]+
(。它可以匹配一串数字内的连续-
或/和.
。
您可以使用
^[0-9]+(?:[.-][0-9]+)*$
查看正则表达式演示
如果在.matches()
方法中使用它,则可以省略^
和$
定位点。
详情:
^
- 字符串的开头[0-9]+
- 1 个或多个(+
量词匹配1 个或多个匹配项,如果只需要匹配单个匹配项,则删除+
量词((?:[.-][0-9]+)*
- 零个或多个连续序列[.-]
-.
或-
[0-9]+
- 1 位或多位数字(适用与上述相同的量词注释(
$
- 字符串的结尾。
这里应该这样做:
^[0-9]([.-][0-9])*$
一位数字,后跟零位或多次出现(点/减号数字(
其他答案略有不同。 您没有指出没有句点和连字符的孤位数的情况:
- (无效( 1-(无效( 1(我假设这种情况无效(
此外,此正则表达式只允许个位数(例如 2.2.2,而不是 22.22.22(
^d([.-]d)+$
两者
^[0-9]([.-][0-9])*$
和
^[0-9]+(?:[.-][0-9]+)*$
工程。谢谢