2013-08-04 15 views
0

我想正則表達式,像這樣的Javascript動態正則表達式解析

var regex_pattern = '/cat|bat|dog/i'; 

regex = new RegExp(regex_pattern, "i"); 

var string = "A dog saw a cat and a bat"; 

string.match(regex); 

但它似乎並沒有被解析。我在做什麼錯誤的表達?

回答

6

你已經把一個正則表達式字面語法放在一個字符串中。您應該使用正則表達式語法:

var regex = /cat|bat|dog/i; 

或者傳遞一個字符串(無定界符/改性劑)作爲第一個參數RegExp constructor

var regex = new RegExp('cat|bat|dog', 'i'); 

你也將需要g標誌(全局修飾符)來測試正則表達式對所有可能的匹配,否則只返回第一個匹配。

完整的示例:

var regex = /cat|bat|dog/ig; //or new RegExp('cat|bat|dog', 'ig'); 
var string = "A dog saw a cat and a bat"; 
var matches = string.match(regex); 
matches; //["dog", "cat", "bat"]