JavaScript — получите только переменную часть соответствия regex

данный:

var regexp = new RegExp("<~~include(.*?)~~>", "g");

Что является easist путем в JavaScript для присвоения переменной тому, что подобрано.*?

Я могу сделать это, но это немного ужасно:

myString.match(regexp).replace("<~~include", "").replace("~~>", "");
8
задан Matt Ball 4 August 2010 в 20:26
поделиться

3 ответа

Javascript должен возвращать объект массива при совпадении regex, где нулевой индекс массива - это вся строка, которая была сопоставлена, а следующие индексы - это группы захвата. В вашем случае что-то вроде:

var myVar = regexp.exec(myString)[1];

должно присвоить значение группы захвата (.*?) в myVar.

7
ответ дан 5 December 2019 в 12:54
поделиться

Вы можете использовать опережающий просмотр части этого регулярного выражения. См. Здесь:

Регулярное выражение для извлечения числа

и / или здесь:

http://www.regular-expressions.info/lookaround.html

0
ответ дан 5 December 2019 в 12:54
поделиться

(Цитаты из MDC )

Включение круглых скобок в шаблон регулярного выражения заставляет запоминать соответствующее подсовпадение. Например, / a (b) c / соответствует символам 'abc' и запоминает 'b' .

Поскольку . *? является первым (и единственным) запоминающимся совпадением, используйте $ 1 в строке замены:

var foo = myString.replace(regexp, '$1');

Изменить: Согласно вашему комментарию, вы может также (возможно, с более ясным намерением) сделать это:

var foo = regexp.exec(myString)[1];
6
ответ дан 5 December 2019 в 12:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: