2013-06-27 45 views
0

我想更換(模板語言)來替換一個或多個問號,這樣的:的Javascript正則表達式和逃避建議需要

var translation = "this is a ???"; 
console.log(translation.replace(/(\?+)/g, "replacement")); //this is a replacement 

但現在,我最近遇到了一個問題,即問號是實際上是一個問題,不應該逃脫。我決定去爲~作爲逃避的性格,所以這不應該被轉義:

var translation = "this should not be escaped, cause it's a question, is it~?"; 
console.log(translation.replace(/[^~](\?+)/g, "replacement")); 

工作至今。但是,如果我去與多個問號(爲模板語法要求),我結束了廢話:

var translation = "this should not be escaped, cause it's a question, is it~???"; 
console.log(translation.replace(/[^~](\?+)/g, "replacement")); 
//this should not be escaped, cause it's a question, is it~replacement <-- ??? 

就怎麼做任何建議?經典的\作爲逃避角色會讓我比~更開心,但我遇到了問題。

+3

轉義字符一般只轉義一個字符 - 這將是不尋常的'〜'逃脫*系列*的'?'。相反,編寫'〜?〜〜〜?' –

+0

@ExplosionPills這是很有意義的,這實際上是一個很好的觀點。 –

+0

需要jsfiddle鏈接的人可以在此工作 http://jsfiddle.net/A4SGh/ –

回答

1

~應該只能用於轉義單個字符(我認爲這是可以預期的)。模板的用戶可以編寫~?~?~?來轉義多個字符。

至於替換,[^~]仍然選擇一個字符。

translation.replace(/([^~])\?+/g", "$1replacement") 

$1將再次插入所選字符