gpt4 book ai didi

javascript - 我如何验证包含表达式/条件的字符串

转载 作者:行者123 更新时间:2023-11-30 11:07:23 25 4
gpt4 key购买 nike

你好社区!

我正在寻找一种方法来验证存储在字符串中的表达式,例如 IF block 中的条件。

例子:

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 验证“表达式字符串”。我试图制作一个正则表达式,但它似乎比我预期的要复杂。另外,我在网上也没有找到解决这个问题的办法。

有没有人解决这个问题,或者是否有其他方法来匹配/验证这样的字符串?

有效输入:

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 statement并使用异常(exception)情况获得额外返回。

如果需要,您可以返回 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));

关于javascript - 我如何验证包含表达式/条件的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55104493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com