Есть много способов проверить правильность строки или не использовать выражение регулярного выражения и соответственно использовать совпадение / тестовое совпадение.Я проверяю, является ли действительным выражение, содержащее буквы (ab), операторы (+, -, /, *), только специальные символы, такие как (')', '(') и цифры (0-9)
Я уже пробовал использовать традиционные методы: нажимать, когда символ «(» и «выталкивать, когда»), и проверять сбалансированные скобки или нет.Код почти работает даже для операторов, но в некоторых случаях мне не хватает позади.Предоставленный код может быть в некоторой степени правильным.
checkBalancedString(text){
let format = /[A-Za-z0-9]/;
let expression = /[+-\/*]/
if(text.length <=2){
if(format.test(text[0])){
return true;
}
return false;
}
for(let i=0;i<text.length;i++){
let stringcheck=[]
if(text[i]== '('){
stringcheck.push(text[i])
}
switch(text[i]){
case ')':
if(!stringcheck.length){
return false;
}
stringcheck.pop();
break;
}
let checkalphaformat = format.test(text[i]);
if(checkalphaformat){
let nextChar = format.test(text[i+1]);
let nexttonextChar = expression.test(text[i+2])
if(nextChar || nexttonextChar){
return false
}
}else{
let nextChar = format.test(text[i+1]);
if(!nextChar){
return false;
}
if(text[i+2]){
let nextChar = format.test(text[i+2])
if(!nextChar){
return false;
}
}
}
if(!stringcheck.length){
return true;
}
}
}
В короткой строке должен возвращаться допустимый, где выражение, как: (a + b), a + b, a / 9, b * 5, (e-6 * (d + e)), (a + b) / (cd) и выражение, подобное: +, -, -a, + a-, (a +, (a + v, e *)
Выражение должно быть завершено, когда за каждым символом следует оператор или скобка, либо за оператором следуют только символы, а в скобках - только символ. Не должно быть ни одного оператора из текущего индекса (спереди и сзади) и двух символоввместе