2017-04-14 130 views
0

我想用re模塊匹配整數和浮點數。因此,如果有人類型下列輸入類型中的一種,應該驗證它是一個數字:正則表達式用逗號和點數匹配數字

- 1000 
- 1.000 
- 1,000 
- ($1,000.98) 
- -1.000 
- 1.0 
- $1,0000 

現在我使用的是以下幾點:

"^[-+]?[0-9]+$" 

任何幫助表示讚賞

回答

2

對於給定的輸入這個表達式應該工作:

^(?:[+-]|\()?\$?\d+(?:,\d+)*(?:\.\d+)?\)?$ 

RegEx Demo

破碎:

  • ^ - 啓動
  • (?: - 開始非捕獲組
    • [+-] - 匹配+-
    • | - OR
    • \( - 匹配( )? - 完非捕獲組(可選)
  • \$? - 匹配$(可選)
  • \d+ - 第1個或多個數字
  • (?: - 開始非捕獲組
    • , - 匹配一個逗號
    • \d+ - 第1個或多個數字
  • )* - 完非捕獲組(零個或多個發生)
  • (?: - 啓動非捕獲組
    • \. - 匹配一個DOT
    • \d+ - 匹配1位或更多位數
  • )? - 結束非捕獲組(可選)
  • \)? - 到底
  • $匹配文字)(可選) - 結束
+1

真的很酷,謝謝! – Probs

-1

您好我搞砸周圍regexr.com和我得到了以下匹配所有7個值

[0-9]?[-+.,]?[0-9]+[.]?[0-9]+ 

希望這可以幫助,這裏是proof

+0

嗨C.Molloy,這不符合預期,因爲如果它包含一個字符串,那麼它仍然匹配 - 這不是我想要的。 anubhava提供的解決方案更加完整。但感謝您的幫助! – Probs

相關問題