gpt4 book ai didi

javascript - 用于验证用户定义的条件评估逻辑的正则表达式

转载 作者:行者123 更新时间:2023-11-29 16:02:35 25 4
gpt4 key购买 nike

我正在研究一个逻辑,用户定义了多个条件来验证,然后他们还定义了条件应该以什么方式评估,这样理解,用户定义了 4 种不同的条件,当用户定义评估标准时,它定义了像 ((1 AND 2 AND 3) OR 4),所以我想在正则表达式的帮助下验证评估标准,我构建了以下函数,

function validateCustomLogic(ele){
var msg = '';
var isError = false;
var eleVal = $(ele).val();
if(typeof eleVal != 'unknown' && typeof eleVal != 'undefined' && eleVal != null && eleVal != ''){
var regEx = /^([(]*[1-9]+[ ][AND|OR]\w*[ ][1-9]*[)]*)*$/gi;
var matchEle = eleVal.match(regEx);
if(matchEle == null){
isError = true;
}
}
else{
isError = true;
}

return isError;
}

此函数调用了我的输入更改,其中用户定义了评估标准,

<input onchange="validateCustomLogic(this)"  type="text" />

我的正则表达式 /^([(]*[1-9]+[ ][AND|OR]\w*[ ][1-9]*[)]*)*$/gi 对某些模式识别有效,但对所有模式识别无效,下面是测试结果,

Input                         Result            Expected Result
1 AND 2 AND 3 AND 4 Error: false false
1 AND 2 AND (3 AND 4) Error: false false
1 AND 2 AND 3 (AND 4) Error: true true
(1 AND 2 AND 3 AND 4 Error: false true*
)1 AND 2 AND 3 AND 4 Error: true true
(1 AND 2 AND 3) AND 4 Error: true false*
(1 AND 2)(AND 3 AND 4) Error: true true
((1 AND 2 AND 3 AND 4) Error: false true*

如果您看到测试结果,一些带有 * 的条目对此正则表达式不满意,不确定我在这里遗漏了什么。谁能帮我验证一下。

最佳答案

https://regex101.com/r/anq7Mc/2

/^\((\d+\)? (AND|OR) )+\d+(\)|\) .*?)$|^(\(?\d+\)? (AND|OR) )+\d+(\)|\) .*?)$|^(\d+ (AND|OR) )+\d+$/

这就是你需要的一切

enter image description here

关于javascript - 用于验证用户定义的条件评估逻辑的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50503122/

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