簡體   English   中英

檢查字符串是否包含計算

[英]Check if string contains calculation

問題和標題一樣簡單:如何確保字符串包含計算。

我有一個應該包含計算的字符串。 該字符串可能是這樣的: "10 * 10 / 2 * 3" 但是總有一些人想破壞事物,所以我想檢查一下這是否是一種計算。 用戶可以填寫以下內容: "alert('hi!')"

當我使用eval() ,它仍然會警告用戶(如果用戶填寫: "alert()" )。

有誰知道我怎么能檢查字符串是否包含計算而沒有其他內容?

如果只想檢查字符串是否包含算術運算,則可以將其與正則表達式匹配,如下所示:

([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9]+)

但是 ,我強烈建議您將javascript庫用作mathjsJavaScript Expression Evaluator庫 ,例如,

Parser.evaluate("3 ^ x", { x: 7 });

這些庫將確保忽略代碼注入,當然... :-)

在這種情況下,我建議使用其他解決方案。

我建議您首先嘗試使用專門用於處理數學的庫,而不是嘗試將字符串white list以確保它只是數學表達式。

我沒有經驗,但是“ javascript數學解析器”的快速研究使我進入了這一領域: http : //mathjs.org/docs/expressions/parsing.html

您可以只檢查輸入字符串的字符。 如果字符串包含(a,b,c ... z)之類的任何字符,則不要評估它。

暫無
暫無

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

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