Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Подставить в регулярное выражение переменную (https://javascript.ru/forum/misc/66648-podstavit-v-regulyarnoe-vyrazhenie-peremennuyu.html)

Heger 29.12.2016 20:57

Подставить в регулярное выражение переменную
 
Пока составлял пост меня разлогинили и всё писал зря, нигде текст не сохранился, ну да ладно ещё раз.

Нужно переменную id_met подставить в искомую строку re.
dostavka_line_full = 'm5cp67cn43m2cp70007cn0m6cp34cn0m2cp2cn0m2cp8cn10'; //строка в которой ищем re
id_met = '2'; //часть строки которую ищем
//re - строка которую ищем
re = /m2cp(\d+)cn0/g; // так работает
re = '/m' + id_met  + 'cp(\d+)cn0/g'; // не работает
re = new RegExp('m' + id_met + 'cp(\d+)cn0','g'); // не работает
re = new RegExp(/m/ + id_met + /cp(\d+)cn0/g); // не работает
re = /m/ + id_met + /cp(\d+)cn0/g; // не работает

found = dostavka_line_full.match(re);
alert(found)

В dostavka_line_full должно два раза найтись re, как их найти? Сижу целый день не могу разобраться... :-?

Heger 29.12.2016 21:29

Цитата:

Сообщение от Rise (Сообщение 439319)
Heger, строка 6 почти угадал - экранируй слэш.

Если не трудно как это должно выглядеть? :)

Heger 29.12.2016 22:09

Понял, спасибо.
Для тех кто тоже ищет - вот так работает:
id_met = '2';
dostavka_line_full = 'm5cp67cn43m2cp70007cn0m6cp34cn0m2cp2cn0m2cp8cn10';
re = new RegExp('m' + id_met + 'cp(\\\d+)cn0','g');
found = dostavka_line_full.match(re);
alert(found);

Heger 29.12.2016 22:26

Цитата:

Сообщение от Rise (Сообщение 439327)
Heger, а с двумя слэшами не работает что-ли?

Да точно с двумя слэшами тоже работает, тоесть так:
re = new RegExp('m' + id_met + 'cp(\\d+)cn0','g');

laimas 29.12.2016 22:34

Цитата:

Сообщение от Heger
Да точно с двумя слэшами тоже работает

Не с двумя или более, а нужно экранировать то, что используется в шаблонах как спецсимволы.


Часовой пояс GMT +3, время: 10:28.