Piszę aplikację, która pozwala użytkownikowi określić wyrażenie regularne. Oczywiście użytkownicy popełniają błędy, więc potrzebuję sposobu na obsługę wyrażeń regularnych, które są nieosiągalne, i udzielę użytkownikowi porady, jak rozwiązać problem.Rozumienie wyrażeń regularnych analizowanie wyjątków w JavaScript
Problem polega na tym, że wyjątki generowane przez new RegExp("something awful")
nie są przydatne dla regex n00bs i mają różne komunikaty na przeglądarkę. Na przykład:
Dane:
try{
new RegExp("(pie");
}catch(e){
console.log(e.message);
}
- Firefox wyrzuca "niezakończony nawias".
- Safari rzuca „missing)”
- Chrome rzuca „grupę niezakończony”
I nie zdziwiłbym się, gdyby te struny są wiadomości użytkownika języka zlokalizowane, lub że już oddaliła się w czasie , dzięki czemu jest to zwariowany węzeł, który można rozwiązać za pomocą wyjątku.message.
Moim celem jest uchwycić wyjątek, dowiedzieć się, o co naprawdę chodzi, i umieścić o wiele bardziej przyjazny dla początkujących komunikat. (I ostatecznie podświetlając niedopasowany paren, w tym przykładzie.)
Czy jest jakiś inny identyfikator wyjątku, którego powinienem używać? Czy istnieje lepszy sposób na odróżnienie tych elementów od siebie? Po tym wszystkim, czy ktoś po prostu zebrał wszystkie te ciągi w kilku najpopularniejszych przeglądarkach?
Chciałbym sprawdzić, co niektóre popularne strony testowania online regex zrobił – mplungjan
Czy regex '(abcd})' mają jedno za mało nawiasów klamrowych lub jeden za dużo? –
A oto sztuczka, aby zdobyć większość możliwych wiadomości. Napisz skrypt zawierający kilka poprawnych, ale bardzo skomplikowanych wyrażeń regularnych. Naprawdę używam i nadużywam wszystkich funkcji regex dostępnych w JavaScript. I gniazdowania ich i wszystkiego oczywiście. Następnie losowo usuń, dodaj lub zmień kilka znaków w tych i spróbuj je skompilować. I zapisz wszystkie komunikaty o błędach, które otrzymasz (wraz z regex, który je spowodował). Ze względu na losowość powinieneś być w stanie wypróbować wiele nieudanych przypadków, a dzięki automatyzacji nie musisz się martwić duplikatami. –