2011-01-13 89 views
4

我想將看起來像正則表達式的字符串轉換爲正則表達式。Javascript:將字符串轉換爲正則表達式

我想這樣做的原因是因爲我動態構建了要在正則表達式中使用的關鍵字列表。例如,使用文件擴展名,我將提供我想包含在正則表達式中的可接受擴展名列表。

var extList = ['jpg','gif','jpg']; 

var exp = /^.*\.(extList)$/; 

感謝,任何幫助表示讚賞

回答

9

你會想用正則表達式的構造函數:

var extList = ['jpg','gif','jpg'];  
var reg = new RegExp('^.*\\.(' + extList.join('|') + ')$', 'i'); 

MDC - RegExp

+0

另一種方法可以使用eval(.. ),但創建Regexp對象是更好的解決方案。 – 2011-01-13 04:30:50

2
var extList = "jpg gif png".split(' '); 
var exp = new RegExp("\\.(?:"+extList.join("|")+")$", "i"); 

需要注意的是:

  • 您需要雙擊逃生反斜槓(曾經爲字符串,一次是爲正則表達式)
  • 您可以提供的標誌,以正則表達式(如不區分大小寫)作爲字符串
  • 你不需要錨你的特定正則表達式的字符串的開始,對吧?
  • 我假設你不需要捕獲什麼擴展名,就把你的parens變成了一個非捕獲組,(?:...)

哦,你原來的擴展名列表中包含 'JPG' 兩次:)

1

可以使用RegExp對象:

var extList = ['jpg','gif','jpg']; 

var exp = new RegExp("^.*\\.(" + extList.join("|") + ")$"); 
相關問題