実際には括弧の検証がありますが、角括弧が括られている場合にのみ括弧が空であるかどうかは検証されません。空の括弧で数式を検証する
たとえば、 2 + 5 + (3 * {1 – 2}) = 4
がtrueを返しますが、1 +()
もtrueを返し、falseを返す必要があります。
これは私のコードブラケットが空であるかどうかを検証するにはどうすればよい
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;
}
あります?何か案は?
これを構文木に解析してみてください(とにかくそれを行う必要があると思います)。そうすればもっと簡単になります。 – Bergi