簡體   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