2011-06-06 31 views
3

我正在嘗試使用jshint清除一些Javascript代碼。在正在使用第三方腳本,jshint抱怨轉義的javascript在這一行:jshint正則表達式中的非轉義字符

​​

我也想明白這一點正則表達式做什麼,但我沒有看到它。任何人都可以告訴我這是幹什麼用的,以及如何以清理的方式來書寫它?

感謝您的任何提示。

+0

這是JSHint中的一個錯誤。正則表達式看起來像上下文中的垃圾。 – Raynos 2011-06-06 13:49:48

回答

5

它匹配以下任何字符:|()[{.+*?^$\並用其轉義對象替換它(反斜槓加上那個字符)。

雖然在許多正則表達式方言的法律,包括一個字符類中的轉義[,它可以在其他觸發一個錯誤,那麼試試這個:

var cleanString = deaccentedString.replace(/[|()\[{.+*?^$\\]/g,"\\$0"); 

(不必要的捕獲組可以被丟棄, )

+0

謝謝你的解釋。 – Mutz 2011-06-06 14:13:12

3

正則表達式選擇「特殊」字符並在前面填充反斜槓。我的猜測是,它不喜歡角色類中的裸體「[」,但這只是一個猜測。你可以嘗試:

var cleanString = deaccentedString.replace(/([|()\[{.+*?^$\\])/g,"\\$1"); 

你的另一個選擇是不用擔心jshint說什麼;畢竟,它只是一個諮詢工具,如果代碼在所有瀏覽器中都能正常工作,那麼建議顯然很糟糕:-)

相關問題