Ich schreibe eine App, mit der ein Benutzer einen regulären Ausdruck angeben kann. Natürlich machen Benutzer Fehler, daher muss ich mit regulären Ausdrücken umgehen können, die nicht auffindbar sind, und dem Benutzer einige umsetzbare Ratschläge geben, wie das Problem behoben werden kann.Separieren von Ausnahmen für reguläre Ausdrücke parse in JavaScript
Das Problem, das ich habe, ist, dass die Ausnahmen von new RegExp("something awful")
nicht hilfreich für Regex n00bs sind, und verschiedene Meldungen pro Browser haben. Zum Beispiel:
Gegeben:
try{
new RegExp("(pie");
}catch(e){
console.log(e.message);
}
- Firefox wirft "ungekündigten klammern".
- Safari wirft „fehlt)“
- Chrome wirft „Unterminated Gruppe“
Und es würde mich nicht überraschen, wenn diese Nachricht Strings benutzer Sprache lokalisiert sind, oder dass sie schon im Laufe der Zeit driftete , macht dies zu einem verrückten Knoten, um sich mit Ausnahme zu lösen.
Mein Ziel ist es, die Ausnahme zu verstehen, herauszufinden, worum es wirklich geht, und eine viel anfängerfreundlichere Nachricht zu veröffentlichen. (Und schließlich Hervorhebung der nicht übereinstimmenden paren, in diesem Beispiel.)
Gibt es eine andere Ausnahmekennung, die ich verwenden sollte? Gibt es eine bessere Möglichkeit, diese auseinander zu halten? Hat all das gerade versäumt, hat jemand nur gesammelt, was all diese Strings in den verschiedenen beliebtesten Browsern sind?
Ich würde sehen, was einige der beliebten Regex-Online-Test-Seiten tat – mplungjan
Hat die Regex '(abcd})' eine zu wenige Klammern oder eine zu viele? –
Und hier ist ein Trick, um die meisten möglichen Nachrichten zu erhalten. Schreiben Sie ein Skript, das einige gültige aber sehr komplizierte reguläre Ausdrücke enthält. Wirklich alle in JavaScript verfügbaren Regex-Funktionen verwenden und missbrauchen. Und nisten sie und alles natürlich. Dann entfernen, fügen oder ändern Sie ein paar Zeichen in diesen und versuchen sie zu kompilieren. Und speichern Sie alle Fehlermeldungen, die Sie erhalten (zusammen mit der Regex, die es verursacht hat). Aufgrund der Zufälligkeit sollten Sie in der Lage sein, viele Fehlerfälle auszuprobieren, und dank der Automatisierung müssen Sie sich keine Gedanken über Duplikate machen. –