Я пытаюсь записать математические выражения между круглыми скобками в строку с javascript. Мне нужно захватить скобки, которые включают ТОЛЬКО числа и математические операторы [0-9], +, -, *, /,% и десятичную точку. Приведенные ниже примеры демонстрируют, чего я добиваюсь. Мне удалось приблизиться к желаемому результату, но вложенные скобки всегда портят мое регулярное выражение, поэтому мне нужна помощь! Мне также нужно, чтобы он выглядел глобально, а не только для первого случая.
let string = "If (2> 1, if (a> 100, (- 2 * (3-5) * 1004) * (8-2)) , (1 + 2) ), (3 (1 + 2)) ) ";
По возможности я хочу преобразовать этот синтаксис
if (условие, iftrue, iffalse)
в этот синтаксис
if (condition) {iftrue} else {iffalse}
, чтобы его можно было оценить по javascript и просмотреть в браузере. Я сделал это до сих пор, но если блоки iftrue или iffalse содержат круглые скобки, все взрывается! Поэтому я пытаюсь захватить эту скобку и вычислить перед преобразованием синтаксиса. Любой совет приветствуется.
Самым близким, что я получил, был этот /[\d()+-*/.]/g, который получает то, что я хочу, но в этом примере
( 1 + 2) (1 <<strong> 1) sdasdasd (1 * (2 + 3))
вместо отклонения (1 <1) группа полностью соответствует <strong>(1 и 1) . Мой идеальный сценарий:
(1 + 2) (1 <1) sdasdasd <strong>(1 * (2 + 3))
Другой пример: let codeToEval = "if (a> 10, 2, 2 * (b + 4))"; codeToEval - это переданная в функцию функция, которая заменяет a и b правильными значениями, поэтому все заканчивается следующим образом. codeToEvalAfterReplacement = "if (5> 10,2,2 * (5 + 4))"; И теперь я хочу преобразовать это в
if(5>10) {
2
} else {
2*(5+4)
}
, чтобы его можно было оценить с помощью javascript eval () и в конечном итоге просмотреть для пользователей.