私は、ユーザーが正規表現を指定できるようにするアプリを書いています。もちろん、ユーザーは間違いを犯すので、解析できない正規表現を処理する方法が必要であり、ユーザーに問題の修正方法に関する実用的な助言を与える必要があります。正規表現JavaScriptの例外を解析する
私が抱えている問題は、new RegExp("something awful")
によってスローされた例外はregex n00bsには役に立ちませんし、ブラウザごとに異なるメッセージがあることです。たとえば、次のように考えると
:
try{
new RegExp("(pie");
}catch(e){
console.log(e.message);
}
- Firefoxが "終端されていないの括弧" をスローします。
- Safariが「不足している)」
- クローム「終了していませんグループ」
をスローし、それらのメッセージ文字列は、ユーザ言語ローカライズされている、または、彼らは時間をかけて漂流してきたという場合、それは私は驚かないだろうがスローされますこれは、例外.messageで解ける狂った結び目になります。
私の目標は、例外をキャッチし、それが本当に何であるか把握し、初心者にやさしいメッセージを表示することです。 (そして最終的には、この例では比類のない括弧を強調表示します。)
私は使用すべき他の例外識別子がありますか?これらを区別するより良い方法はありますか?そのすべてに失敗して、誰もが最も人気のあるいくつかのブラウザでこれらの文字列が何であるかを収集しましたか?
普段の正規表現のオンラインテストページで何が起きているのか見てみましょう – mplungjan
正規表現 '(abcd) 'に中かっこが少なすぎるのか、あまりにも多すぎるのでしょうか? –
そして、ここでは、可能性の高いメッセージを得るためのトリックです。有効であるが本当に複雑な正規表現をいくつか含むスクリプトを書く。 JavaScriptで利用可能なすべての正規表現機能を実際に使用し、悪用します。それらを入れ子にし、もちろんすべてを入れます。その後、それらの中のいくつかの文字をランダムに削除、追加または変更し、それらをコンパイルしようとします。そしてあなたが得たすべてのエラーメッセージ(それを引き起こした正規表現と共に)を保存してください。ランダム化されているため、多くの失敗事例を試すことができます。自動化することで、重複を心配する必要はありません。 –