Я работаю над логикой, в которой пользователь определил несколько условий для проверки, а затем они также определили, каким образом это условие должно оцениваться, понять его следующим образом. Пользователь определил 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*
Если вы видите результат теста, некоторые записи с *
Я не удовлетворен этим регулярным выражением, не уверен, что мне здесь не хватает.Может ли кто-нибудь помочь мне подтвердить это.