2015-07-03 35 views
-5

我搜索了很多,但無法找到這個正則表達式。我的問題是,我做了一個計算器,但無法完全驗證我的顯示。我的情況是與點 我需要我的正則表達式是:數字點數字運算符數字點(1.23+1.23+1.)。點必須只放置一次,而不是像(1..23+ 1.1.1)。我也發現了類似的正則表達式,但它沒有覆蓋的情況下(1.23 +1.) 這裏是我的正則表達式 - >/[0-9-+/*]+(\.[0-9][0-9]?)?/gRegEx解決方案爲1.23 + 1.23 + 1

+0

它會這樣做:/[0-9-+*]+(\.[0-9][0-9]?)?/g –

+0

你能澄清一下這個正則表達式正在使用哪種語言? –

+0

我想通過提供的正則表達式來判斷JavaScript。 –

回答

0

檢查了這一點(demo):

/^(([-+*\/ ]+)?(\b(\d+\.\d+)\b|\d))+$/ 

,但它的工作只有在有是每個字符串的一個等式 - 它匹配字符串的開頭(^)和結尾($)。但是,您也可以使用/m或/和/g修飾符。

編輯

如果僅約 ' - ' 字符就足以將它添加到字符類:

/^(([-–+*\/ ]+)?(\b(\d+\.\d+)\b|\d))+$/ 
+0

謝謝這是非常好的。我需要表達來涵蓋一件事,最後一個符號也可以是運營商(1.23 + 2.33+) –

+0

@KonstantinPopov你的意思是你想要覆蓋一個遺產嗎?或者只是最後的+或 - ? –

+0

沒有括號只有運營商+ - */:)。我的想法是有計算器屏幕,我可以鍵入有效的方程式,我需要正則表達式來驗證顯示的每種類型。計算器只有主要功能,如+ - */ –

0

可以使用這個

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

擴展:

^       # BOS 
[+-]?       # Optional Plus or minus 
(?:       # Decimal term 
     \d+ 
     (?: \. \d*)? 
    | \. \d+ 
) 
(?:       # Optionally, many more terms 
     [+-]       # Required Plus or minus 
     (?:       # Decimal term 
      \d+ 
      (?: \. \d*)? 
     | \. \d+ 
    ) 
)* 
$        # EOS