Javascript String.replace с динамическими регулярными выражениями? - PullRequest
18 голосов
/ 01 августа 2009

У меня есть следующий код, который работает, но мне нужно добавить некоторые другие вещи в объект регулярного выражения (regex2) во время выполнения. Однако text.replace не похож на строковый объект для регулярного выражения, так как я могу заставить эту работу работать?

var regex2 = /\|\d+:\d+/;
document.write("result = " + text.replace(regex2, '') + "<br>");

Ответы [ 4 ]

55 голосов
/ 01 августа 2009

Вы можете сделать объект регулярного выражения из строки, используя функцию конструктора RegExp :

var regExp = new RegExp(myString);  // regex pattern string

text.replace(regExp, '');
24 голосов
/ 21 января 2011

Дополнение к CMS: Конструктор RegExp имеет второй необязательный параметр flags
(15.10.4 Конструктор RegExp)

var text = "This is a Test.";

var myRegExp = new RegExp('teST','i');

text.replace(myRegExp,'Example');
// -> "This is a Example."

в качестве флагов вы можете установить

  • g -> глобальный поиск (все вхождения)
  • i -> без учета регистра
  • м -> многострочный
4 голосов
/ 09 октября 2012
var value = "2012-09-10";
value = value.replace(/([0-9]{4})[\/-]([0-9]{2})[\/-]([0-9]{2})/,"$3/$2/$1");
alert(value);

это покажет

10/09/2012
0 голосов
/ 26 февраля 2014

вы можете использовать eval для,

new RegExp( eval("/"+str+"/i") );

до свидания ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...