[英]Regular expression for hyphen separated floating point numbers
在设计正则表达式以验证Java中连字符分隔的浮点数时需要一些帮助。 到目前为止,我已经成功实现了此RegEx:
(^((\\d)+(\.[0-9]+)?)(\-)?((\\d)+(\.[0-9]+)?)$)|^(\\d+)$
它符合以下条件:
1) 2
2) 2.10
3) 3.10-3.14
这个问题是,它也匹配错误的数字“ 3.103.310”。 非常感谢您为解决此问题提供的任何帮助。
问题来自第一个备选方案,该备选方案将一个或多个数字与可选的小数部分( (\\d)+(\\.[0-9]+)?
)匹配,然后再匹配一个连字符,再匹配一个1+个数字,再匹配一个可选字符小数部分。 因此,允许2个点。
您可以像这样修复模式:
^\d+(?:\.\d+)?(?:-\d+(?:\.\d+)?)*$
细节
^
-字符串的开头 \\d+
-1个以上数字 (?:\\.\\d+)?
-可选的非捕获组:
\\.
-一个点 \\d+
-1个以上数字 (?:-\\d+(?:\\.\\d+)?)*
-匹配0+次出现的非捕获组
-
连字符 \\d+(?:\\.\\d+)?
-1个以上的数字和1或0次出现.
和1个以上的数字 $
-字符串结尾
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.