我正在開發一個使用JavaScript和PHP的分佈式計算器。計算器應該識別括號並根據括號改變計算順序。所有基本的數學運算(*
,/
,+
,-
)具有相同的優先級(與普通優先級不同)。我使用下面的正則表達式來獲取用戶輸入並放入數組中。此正則表達式非常適用於正數:用Javascript開發計算器來檢測負數
/\d*\.\d+|\d+|[()/*+-]/g
然而,當涉及到負數,它崩潰,因爲我使用遞歸替換功能替換每對括號(和內容)與結果這些括號內的操作。我這樣做是因爲這是一個分佈式計算器,我應該在服務器端執行每個原子操作,然後將結果返回並顯示在操作的歷史記錄中。
我只想檢測負數(將它們保存爲數組中的一個元素)。我認爲它應該以這種方式工作:當有兩個連續的操作符(它們之間有零個或多個空格字符),第二個操作符是一個減號(-
)時,減號應連接到以下數字(如號碼的符號)。另外,如果第一個數字前面有一個減號,則該符號應連接到該數字。
感謝您的幫助。 – Metallica 2013-03-03 20:18:35