Строка массива Javascript для литерала регулярных выражений - PullRequest
2 голосов
/ 08 марта 2012

У меня есть рабочий пример: http://jsfiddle.net/R7KuK/

Я пытался создать массив, содержащий полные регулярные выражения с разделителями регулярных выражений и установленными флагами, но объект RegExp анализирует данные строки как строки, а не как регулярные выражения.

  var regex = "/wolves/i"

против

  var regex = /wolves/i

Мой вопрос: как мне преобразовать строковое регулярное выражение в фактическое регулярное выражение?


ОБНОВЛЕНИЕ: Это было только до Феликс Кинг любезно объяснил мне, что

var array = ["/wolves/i", "/Duck/"];

смело может стать:

var array = [/wolves/i, /Duck/];

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

Попробуйте это:

var regexSplit = regex.split( '/' );
var realRegex = new RegExp( regexSplit[1], regexSplit[2] );

Или лучше:

var regexMatch = regex.match( /^\/(.*)\/([^\/]*)$/ );
var realRegex = new RegExp( regexMatch[1], regexMatch[2] );

Лучше, если в вашем регулярном выражении есть '/', первое не получится;)

0 голосов
/ 08 марта 2012

как украдено из здесь :

Используйте конструктор объекта RegExp для создания регулярного выражения из строки:

var re = new RegExp("a|b", "i");
// same as
var re = /a|b/i;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...