2015-09-04 41 views
0

我有一個動態的正則表達式構造,它像一個突出顯示器一樣工作。從變量中消毒正則表達式構造

我需要防止用戶輸入打破正則表達式。

例如,如果用戶輸入 「\\」:

var search = '\\'; 
var regex = new RegExp('(' + search + ')'); 
var replaced = someData.replace(regex, '<b class="h">$1</b>'); 

這將產生畸形的正則表達式的一個例外。

有沒有什麼功能可以防止這種情況發生,而不使用try-catch預防?

回答

0

變化,

var search = '\\'; 

var search = '\\\\'; 

它是失敗的原因是,\轉義字符,爲了得到\你需要逃出像這樣的字符:\\,即產生\

因此\\\\產生\\

+1

他正在尋找一種通用的方式來將東西插入到正則表達式中。 – 2015-09-04 15:17:57

+0

請考慮編輯您的帖子以添加更多關於您的代碼的解釋以及爲什麼它可以解決問題。一個主要包含代碼的答案(即使它正在工作)通常不會幫助OP瞭解他們的問題。 – SuperBiasedMan

+0

爲什麼上述鏈接沒有提到這個'return s.replace(/(\ W)/ g,'\\ $ 1');' –