我在寫一個讓用戶指定正則表達式的應用程序。當然,用戶會犯錯,所以我需要一種方法來處理不可解析的正則表達式,併爲用戶提供一些關於如何解決問題的可行建議。在JavaScript中分解正則表達式解析異常
我遇到的問題是new RegExp("something awful")
引發的異常對正則表達式n00bs沒有幫助,並且每個瀏覽器都有不同的消息。例如:
考慮:
try{
new RegExp("(pie");
}catch(e){
console.log(e.message);
}
- 火狐拋出 「未結束的括號」。
- Safari瀏覽器拋出「缺少)」
- 鉻拋出「未終止組」
如果這些消息字符串用戶的語言本地化它不會讓我感到吃驚,或者說,他們已失去了時間,這是一個瘋狂的結,以exception.message解開。
我的目標是抓住這個例外,弄清楚它的真正含義,並提出一個更加適合初學者的信息。 (並且最終在本例中突出顯示無與倫比的paren。)
是否還有其他一些我應該使用的異常標識符?有沒有更好的方法來區分這些?所有這些都失敗了,是否有人收集了所有這些字符串跨越幾個最流行的瀏覽器?
我會看看什麼一些流行的正則表達式在線測試頁面 – mplungjan
正則表達式'(abcd})'有一個太少的花括號或一個太多? –
這裏有一個技巧來獲得最可能的消息。編寫一個包含一些有效但非常複雜的正則表達式的腳本。真正使用和濫用JavaScript中提供的所有正則表達式功能。並且當然嵌套他們和一切。然後隨機刪除,添加或更改這些字符並嘗試編譯它們。並保存所有的錯誤信息(以及導致它的正則表達式)。由於這種隨機性,你應該能夠嘗試很多失敗的案例,並且由於自動化,你不必擔心重複。 –