簡體   English   中英

如何驗證包含表達式/條件的String

[英]How can i validate a String which includes an Expression/Condition

你好社區!

我正在尋找一種方法來驗證表達式,如IF塊中的條件,存儲在字符串中。

例:

expression = "2 + 3 == 5"; //or "true || false == true"

if(validationFunc(expression)){
   //do something
}

...

//validates the string and returns a boolean-value
function validationFunc(str) {
   //do validation
   var regex = /^([\s()!]*(([0-9]+)|(true|false){1})[\s()]*[+\-=\*%!]*)+$/g;

   return str.match(regex);
}

使用Regex驗證“Expression-String”是可能的。 我試圖制作正則表達式,但它似乎比我預期的更復雜。 另外,我在網上找不到解決這個問題的方法。

有人為這個問題找到解決方案,還是有其他方法來匹配/驗證這樣的字符串?

有效輸入:

true
1 == true
203 == true
0 == false
true == true
true != false
(true && false) || true == true
true == (true && false) || true
20 + 40 == 60
...

輸入無效:

empty string
true 0
'' != 20
30 && 4 == true
20 + 3 == false
...

您可以使用try ... catch語句並將該異常用於addtional返回。

如果需要,您可以返回true (是的,它是表達式),而不是評估值。

 function check(expression) { var result; try { result = eval(expression); } catch (error) { return error.toString(); } return result; } var expressions = ['30 && 4 == true', '20 + 3 == false', 'f*ck']; console.log(expressions.map(check)); 

 function isValid(expr) { try { return eval(expr); } catch { return false; } } // Valid ; Correct syntax and return true console.log(isValid(`true`)); console.log(isValid(`true == (true && false) || true`)); // Not valid console.log(isValid(`true 0`)); // Incorrect syntax console.log(isValid(`true === 0`)); // Correct syntax but returns false 

暫無
暫無

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

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