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.
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:
SUM(SUM(IF($A1, B4, B0), A1:A223))