Pracuję nad jquery.sheet, aby utworzyć siatkę danych i arkusz kalkulacyjny. Stoję przed wyzwaniem związanym z walidacją formuły w określonej komórce.

To, co chcę osiągnąć, to to, że kiedy opuszczam komórkę (na zdarzeniu focusout), uruchamia się walidator i sprawdza, czy jest to prawidłowe dane wejściowe formuły, czy nie.

Próbowałem to zrobić, budując wyrażenie regularne, ale nie byłem w stanie objąć wszystkich ważnych przypadków, ponieważ są one w programie Excel.

Każda formuła podobna do programu Excel jest ważna

Czy jest jakaś biblioteka js lub regex do tego?

Kilka przykładów: Formuła zaczyna się od „=”

= A1 + B1 (Valid) = $ A1 (Valid) = A $ 1 (Valid) = A $ 1 + B1 (Valid) = A1 (Valid) = A1 + (InValid) = 11 + A1 (Valid) = 11 + (InValid ) = SUMA (A1, A2) = SUMA (A1 + A2)

Wszystkie formuły obecne w programie Excel powinny zostać zweryfikowane

Wszystkie cztery operacje arytmetyczne są również prawidłowe.

0
Bilal Shaikh 20 listopad 2019, 10:57
Nie możesz tego zrobić za pomocą wyrażenia regularnego. Napisz swój własny parser.
 – 
Toto
20 listopad 2019, 15:51

1 odpowiedź

To spełnia twoje dane testowe:

^=([A-Z0-9$]+)([ +*\/-]+[A-Z0-9$]+)*$

Zobacz demo na regex101.com

UPD: Jeśli chcesz sprawdzić poprawność 100% formuł programu Excel, a nie ograniczonego podzbioru, nie możesz tego zrobić za pomocą wyrażenia regularnego. Nie analizuj formuł Excela za pomocą wyrażenia regularnego. Regex po prostu nie jest właściwym narzędziem do analizowania formuł Excela. Oto przykład prawidłowej formuły zaczerpniętej z Redis:

enter image description here

0
Pavel Lint 20 listopad 2019, 12:03
Cóż, tak nie jest, ponieważ dodałem jeszcze kilka przykładów, aby wyjaśnić zamieszanie. powinien zweryfikować wszystkie typy formuł, które mamy w Excelu
 – 
Bilal Shaikh
20 listopad 2019, 11:46
Cóż, teraz, gdy zmieniłeś swoje pytanie, już nie pasuje :) Czy chcesz wszystkie funkcje Excela, czy tylko SUMA?
 – 
Pavel Lint
20 listopad 2019, 11:49
Cóż, mój zły, wyjaśniłem teraz moje pytanie. wszelkiego rodzaju funkcje programu Excel, formuły ponadto każda formuła, której używamy w programie Excel, po prostu sprawdzamy, czy jest poprawna, czy nie? w zasadzie używam jquery.sheet, w którym chcę sprawdzić poprawność formuły, takiej jak Excel
 – 
Bilal Shaikh
20 listopad 2019, 11:54
W tym przypadku nie sądzę, że możesz użyć wyrażenia regularnego. Formuły Excela mogą być bardzo skomplikowane, np. SUM(SUM(IF($A1, B4, B0), A1:A223))
 – 
Pavel Lint
20 listopad 2019, 11:56
Dlatego powiedziałem regex lub jakąkolwiek bibliotekę, aby to zrobić
 – 
Bilal Shaikh
20 listopad 2019, 12:37