Переменная внутри регулярного выражения с использованием javascript [duplicate]

Объявлено, но не определено переменная или функция.

Типичным объявлением переменной является

extern int x;

. Поскольку это только объявление, требуется одно определение. Соответствующим определением будет:

int x;

Например, следующее генерирует ошибку:

extern int x;
int main()
{
    x = 0;
}
//int x; // uncomment this line for successful definition

Аналогичные замечания относятся к функциям. Объявление функции без ее определения приводит к ошибке:

void foo(); // declaration only
int main()
{
   foo();
}
//void foo() {} //uncomment this line for successful definition

Будьте осторожны, чтобы выполняемая вами функция точно соответствовала той, которую вы объявили. Например, у вас могут быть несогласованные cv-квалификаторы:

void foo(int& x);
int main()
{
   int x;
   foo(x);
}
void foo(const int& x) {} //different function, doesn't provide a definition
                          //for void foo(int& x)

Другие примеры несоответствий включают

  • Функция / переменная, объявленная в одном пространстве имен, определенное в другом.
  • Функция / переменная, объявленная как член класса, определяемая как глобальная (или наоборот).
  • Тип возвращаемого значения функции, номер и типы параметров и соглашение о вызове не совсем точно согласуются.

Сообщение об ошибке из компилятора часто дает вам полное объявление переменной или функции, которая была объявлена, но не определена. Сравните его с определением, которое вы указали. Убедитесь, что каждая деталь соответствует.

140
задан Josh Crozier 9 December 2013 в 00:55
поделиться

6 ответов

27
ответ дан Community 23 August 2018 в 19:24
поделиться
  • 1
    Удостоверьтесь, чтобы избежать вашей строки! См. Ответ @zzzzBov – jtpereyda 6 October 2015 в 21:18
  • 2
    Это не работает в моем случае, можете ли вы посмотреть этот jsfiddle и сообщить мне, что делать, если я хочу установить динамику кода страны в выражение regex – Kirankumar Dafda 10 June 2016 в 08:30
  • 3
    – Michael Rader 30 December 2016 в 02:47
  • 4
  • 5
    – Michael Rader 30 December 2016 в 05:43
  • 6
    Важно помнить, что в обычных строках символ \ должен быть экранирован, тогда как в литерале регулярного выражения (обычно) символ / должен быть экранирован. Таким образом, /\w+\//i становится new RegExp("\\w+/", "i") – Ali 16 January 2017 в 15:46
  • 7
    Как насчет / g? – Elgs Qian Chen 8 March 2017 в 04:27
0
ответ дан Jakob Sternberg 23 August 2018 в 19:24
поделиться
6
ответ дан Nikita Rybak 23 August 2018 в 19:24
поделиться

, если вы используете шаблоны шаблонов es6 , являются опцией ...

string.replace(new RegExp(`ReGeX${testVar}ReGeX`), "replacement")
2
ответ дан shunryu111 23 August 2018 в 19:24
поделиться
64
ответ дан steinar 23 August 2018 в 19:24
поделиться
1
ответ дан Timothy Mitchell 23 August 2018 в 19:24
поделиться
Другие вопросы по тегам:

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