2010-06-29 84 views
2

我有一個複雜的regEx內的字符串替換,我想使用一個名爲「標記名」而不是單詞類別的變量,但我不知道如何做到這一點。傳遞一個變量爲正則表達式替換爲字符串

$("textarea").val().replace(/\<Category\>(.*)\<\/Category\>/gi, "<Category>TextVariable</Category>"); 

我試過類似這樣的東西,但它在第一個參數中不起作用。

$("textarea").val().replace("/\<" + tagname + "\>(.*)\<\/" + tagname "\>/gi", "<" + tagname + ">" + TextVariable + "</" + tagname + ">"); 

回答

5

您可以使用RegExp構造函數的字符串圖案和標誌:

var regex = new RegExp("<" + tagname + ">(.*)</" + tagname + ">", "gi"); 
$("textarea").val().replace(regex, "<" + tagname + ">" + TextVariable + "</" + tagname + ">"); 
+0

非常感謝您! :) – Guest 2010-06-29 10:40:27

6

使用RegExp構造函數代替正則表達式文字。

var regex = new RegExp("<" + tagname + ">(.*)</" + tagname + ">", "gi"); 
$("textarea").val().replace(regex, "<" + tagname + ">" + 
    textVariable + "</" + tagname + ">"); 

可以簡化爲:

//capture the tag name: 
var regex = new RegExp("<(" + tagname + ")>(.*)</" + tagname + ">", "gi"); 
$("textarea").val().replace(regex, "<$1>" + textVariable + "</$1>"); 

但是請記住,parsing xml/html with regex is a baaad idea