данный:
var regexp = new RegExp("<~~include(.*?)~~>", "g");
Что является easist путем в JavaScript для присвоения переменной тому, что подобрано.*?
Я могу сделать это, но это немного ужасно:
myString.match(regexp).replace("<~~include", "").replace("~~>", "");
Javascript должен возвращать объект массива при совпадении regex, где нулевой индекс массива - это вся строка, которая была сопоставлена, а следующие индексы - это группы захвата. В вашем случае что-то вроде:
var myVar = regexp.exec(myString)[1];
должно присвоить значение группы захвата (.*?)
в myVar
.
Вы можете использовать опережающий просмотр части этого регулярного выражения. См. Здесь:
Регулярное выражение для извлечения числа
и / или здесь:
(Цитаты из MDC )
Включение круглых скобок в шаблон регулярного выражения заставляет запоминать соответствующее подсовпадение. Например,
/ a (b) c /
соответствует символам'abc'
и запоминает'b'
.
Поскольку . *?
является первым (и единственным) запоминающимся совпадением, используйте $ 1
в строке замены:
var foo = myString.replace(regexp, '$1');
Изменить: Согласно вашему комментарию, вы может также (возможно, с более ясным намерением) сделать это:
var foo = regexp.exec(myString)[1];