Oto interesująca. Ktoś ma dobry REGEX za konwersję wszystkich (pierwszy)^(drugi) do Math.pow ((pierwszy), (drugi))?RegEx dla^b zamiast pow (a, b)
EDIT:
Najlepszym mam tak daleko jest
s = s.replace(/((?:\d+\.?\d*)|\w+|\((?:(?:[^\(\)]*(?:\([^\(\)]*\)))*)\))\s*\^\s*((?:\d+\.?\d*)|\w+|\((?:(?:[^\(\)]*(?:\([^\(\)]*\)))*)\))/g, 'Math.pow($1, $2)') // replace expression^expression with Math.pow($1, $2)
Odpowiedzi do tej pory nie są wystarczająco ogóle. Nie obejmują czegoś takiego jak (var1 + var2)^2 nie dotyczy (var1 * (var2 + var3))^2
Rozwiązanie będzie musiało pracować z nawiasami.
Możesz użyć strfriend.com, aby wizualizować wyrażenie regularne w trakcie jego tworzenia. Właśnie to robiłem.
A najbliższy jest teraz ...? – Oswald
Do czego powinien zostać przekonwertowany symbol "a * b^c'? 'a^b + c'? 'a^b^c'? –
Nie można tego zrobić w zwykłym regex. Wymaga arbitralnej rekursji. Jeśli chcesz otrzymać odpowiedź, sugeruję, abyś podniósł nagrodę, jest to dość skomplikowany problem. – kelloti