簡體   English   中英

Java中實數的正則表達式是什么?

[英]What's a good regular expression for real numbers in Java?

Java中實數的正則表達式是什么?

我創建了正則表達式([-]?[\\\\d]*\\\\.[\\\\d]*)並根據以下預期輸出對其進行了測試:

in                  out        works?
--------------------------------------
qwerty34.34abcd     34.34       yes
qwe-34.34.34abcd    -34.34      no
+17.-9abc           17.0        yes
-.abc0              0.0         no

我必須准確地了解列(out)。 請提供通過所有這些測試的正則表達式。

請嘗試以下方法:

((\+|-)?([0-9]+)(\.[0-9]+)?)|((\+|-)?\.?[0-9]+)

這將匹配包含或不包含符號的實數(包括整數)(在小數點之前有或沒有數字)。

^[+-]?(?:\d+\.?\d*|\d*\.\d+)$
  • ? 用於制作+-選項
  • ?:適用於非捕獲組
  • \\是一個逃脫字符

正則表達式必須滿足以下要求:

  1. 可能有一個可選的標志。 試試[+-]?
  2. 可能有0個或更多可選數字。 試試[0-9]*
  3. 可能有一個小數點。 嘗試[.]以避免反斜視炎。
  4. 小數點后可能有0位或更多位數。 試試[0-9]*
  5. #2和#4中的至少一個具有數字。 這將使用[0-9]+ ,它可以使用交替。

這種模式是否有效: [+-]?([0-9]*[.]?[0-9]+|[0-9]+[.]?[0-9]*) 然而,我擔心災難性的回溯。

下一個怎么樣:

^-?(([1-9][0-9]*)|(0))(?:\.[0-9]+)?$

或者如果你想允許“+”符號,則為下一個:

^(-|\+)?(([1-9][0-9]*)|(0))(?:\.[0-9]+)?$

順便說一句, 這是一個很好的網站,用於測試和共享正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM