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