2012-10-03 36 views
0

可能重複:
Converting user input string to regular expression
javascript new regexp from string在javascript中存儲字符串的正則表達式?

我有在javascript正則表達式的問題一點點(我不太習慣在JavaScript中的正則表達式,只是還沒有) 。我想替換字符串中的一些東西,我發現寫的正則表達式的語法似乎是沒有'"這樣的:var replacedtitle = title.replace(/\[.*?\]/g, "");

現在這一切工作按預期,但我希望用戶能夠添加自己正則表達式,而不改變代碼(我爲一個沒有編碼的朋友做了一個私人項目,我希望能夠給他發送正則表達式,以便在需要替換新的東西而不是我重新包裝時輸入正則表達式每一樣東西)。我通過一個xul文本框(這是一個Firefox插件,但應該與它是一個html文本框相同),他輸入正則表達式,它被添加到json對象並保存。我試着做這樣的事情:

var replacedtitle = ""; 
for(a = 0; a < regex.data.length;a++){ 
    replacedtitle = title.replace(regex.data[a].regex, ""); 
} 

但它不會工作。我懷疑這是因爲regex.data[a].regex將被視爲一個字符串,但替換()似乎並沒有把字符串作爲第一個參數,對吧?

我對此有點不確定,任何幫助將不勝感激。

回答

7

您可以使用new來創建RegEx對象,並提供帶有字符串的模式和修飾符;

var re = new RegExp("\\[.*?\\]", "g"); 
+0

哦謝謝。我試過這個,但是我不知道你必須去掉正則表達式中的'/'。它現在可以正常工作,可以打印:> – galaxyAbstractor

+1

@ raina77ow - 感謝編輯,我太快了...... –

-1
var string = "/\[.*?\]/g"; 
var regex = new RegExp(string); 

ll正常工作。

0

將字符串拆分爲模式和修飾符。

function getRegFromString(string){ 

    var a = string.split("/"); 
    modifiers= a.pop(); a.shift(); 
    pattern = a.join("/"); 
    return new RegExp(pattern, modifiers); 
} 
getRegFromString("/\[.*?\]/gim"); 
相關問題