[英]Check if string contains calculation
問題和標題一樣簡單:如何確保字符串包含計算。
我有一個應該包含計算的字符串。 該字符串可能是這樣的: "10 * 10 / 2 * 3"
。 但是總有一些人想破壞事物,所以我想檢查一下這是否是一種計算。 用戶可以填寫以下內容: "alert('hi!')"
。
當我使用eval()
,它仍然會警告用戶(如果用戶填寫: "alert()"
)。
有誰知道我怎么能檢查字符串是否包含計算而沒有其他內容?
如果只想檢查字符串是否包含算術運算,則可以將其與正則表達式匹配,如下所示:
([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9]+)
但是 ,我強烈建議您將javascript庫用作mathjs或JavaScript 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.