2011-05-18 78 views

回答

6

此正則表達式將做的工作(即不超過2個位數小數點兩側)

^(?:\d{0,2}\.\d{1,2})$|^\d{1,2}$ 

解釋:

^    # Begining of the string 
    (?:   # begining of NON capture group 
    \d{0,2}  # matches 0,1 or 2 digits 
    \.   # decimal point 
    \d{1,2}  # 1 or 2 digits 
)    # end of non capture group 
$    # end of string 

|    # OR 

^    # Begining of the string 
    \d{1,2}  # 1 or 2 digits 
$    # end of string 

這個正則表達式匹配: 2.5, 5, 0.2, .5 但不是: 123.456, 256

11

這應該工作。

(\d*\.?\d+) 

這意味着

  • (開始捕捉組
  • \d*任何數字零次或多次
  • \.?一段零次或一次(即,它是可選的)
  • \d+任何digit one ore more
  • )結束捕獲組

它會爲您列出的所有號碼,捕捉它們在$1

+1

您可以刪除括號並使用'$ 0'來獲取整個正則表達式的匹配內容。 – 2011-05-18 06:28:32

+0

這將匹配'123.456',但OP在小數點的兩邊不要超過2個數字。 – Toto 2011-05-18 12:06:16

+0

@蒂姆謝謝你的提示。我忘了'$ 0',因爲我傾向於發現我通常只想捕獲一部分正則表達式。 – Jeff 2011-05-18 14:13:12