2011-03-05 34 views
2

我有一個可以根據表達式進行替換功能的工作表達式。它工作完美。它根據字符串和表達式的開始找到一個特定的字符串。這是它:帶有可變內容的javascript正則表達式

str.replace(/\bevent[0-9]*\=/, "event"); 

這樣做是它改變event=1event

如果event是一個變量詞怎麼辦?如果我還需要尋找conference呢?

我曾嘗試:

var type = "conference"; 

str.replace(/\b/ + type+ /[0-9]*\=/, "conference"); 

和:

str.replace(/\b/type/[0-9]*\=/, "conference"); 

既不工作。

如何將JavaScript字符串傳遞到正則表達式?

回答

1

你可以做到這一點的RegExp對象:

str.replace(RegExp('\b' + reStr + '[0-9]*\='),StrToReplaceWith) 
+0

我把你的答案,因爲它符合我正在尋找。奇怪的是'\ b'不起作用嗎?我不得不把它拿出來。 – mtlca401 2011-03-05 07:43:41

+0

恐怕我對字邊界字符沒有太多經驗=( – Shad 2011-03-06 04:09:35

2

而不是寫一個正則表達式字面的,使用一個字符串創建一個新的RegExp object

str.replace(new RegExp('\b' + var + '[0-9]'), …) 
+0

我想它的種類搞砸了,我只能選擇一個答案,但你的回答非常完美。但我確實必須拿出'\ b'。由於某種原因,這不起作用。 – mtlca401 2011-03-05 07:35:30