2013-08-04 3 views
0

Я пытаюсь регулярное выражение, как такJavascript Dynamic Regex Синтаксический

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"] 
Смежные вопросы