Ich muss eine Gleichung validieren, tatsächlich habe ich Bracket-Validierung, aber das validiere nicht, wenn die Klammern nur leer sind, wenn Klammern ausgeglichen sind.validiere mathematische Gleichung mit leeren Klammern
Zum Beispiel 2 + 5 + (3 * {1 – 2}) = 4
zurück True, aber 1 +()
auch True und ich muss falsch zurückgeben.
Dies ist mein Code
function mathFormulaValidator(string) {
"use strict";
let formulaSP = string.replace(/ /g, ""),
arr = [],
valid = true;
for (let i = 0; i < formulaSP.length; i++) {
let char = formulaSP.charAt(i);
switch (char) {
case '(':
arr.push(1);
break;
case ')':
if (arr.pop() != 1) {
valid = false;
}
break;
case '[':
arr.push(2);
break;
case ']':
if (arr.pop() != 2) {
valid = false;
}
break;
case '{':
arr.push(3);
break;
case '}':
if (arr.pop() != 3) {
valid = false;
}
break;
default:
console.error(char);
break;
}
}
return valid;
}
Wie kann überprüfen, ob die Klammern leer sind ?? irgendwelche Ideen?
Versuchen Sie, es in einen Syntaxbaum zu parsen (ich denke, Sie müssen das trotzdem tun), dann wird es viel einfacher. – Bergi