繁体   English   中英

连字符分隔的浮点数的正则表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM