Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Можно ли использовать переменную в RegExp? (https://javascript.ru/forum/misc/82071-mozhno-li-ispolzovat-peremennuyu-v-regexp.html)

rsaburov 08.03.2021 09:53

Можно ли использовать переменную в RegExp?
 
Имеется RegExp:
string.replace(new RegExp(".*Ключевое слово.*\r\n",'g'),"")
которое удаляет строку содержащую подстроку Ключевое слово
Можно ли заменить его на переменную javascript?

var keyword = "Здравствуй мир";
string.replace(new RegExp(".*keyword.*\r\n",'g'),"");
Так чтобы удалялась строка, содержащая подстроку Здравствуй мир

рони 08.03.2021 10:40

Цитата:

Сообщение от rsaburov
Можно ли заменить его на переменную javascript?

да, но лучше сначала экранировать служебные символы.

рони 08.03.2021 11:12

Экранирование специальных символов и создание RegExp
 
rsaburov,

const escapeRegExp = str => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
const createRegExp = str => new RegExp(escapeRegExp(str),'gm');
const replaceKeyword = (str, keyword, patern = '') => str.replace(createRegExp(keyword), patern)
let str = `123 Здравствуй мир
Здравствуй мир 123
123Здравствуй мир`;
let keyword = 'Здравствуй мир';
str = replaceKeyword(str, keyword);
alert(str)

rsaburov 08.03.2021 12:36

Большое спасибо, все получилось!

rsaburov 08.03.2021 13:44

Точнее удалилась подстрока Здравствуй мир
Но как удалить всю строку, которая эту подстроку содержит?

рони 08.03.2021 13:54

rsaburov,
что на входе? что на выходе?

рони 08.03.2021 14:02

rsaburov,
const removeKeyword = (str, keyword) => str.split(/\r?\n/).filter(a => !a.includes(keyword)).join('\n');
let str = `123 test
Здравствуй мир 123
123 test`;
let keyword = 'Здравствуй мир';
str = removeKeyword(str, keyword);
alert(str);

rsaburov 08.03.2021 16:53

вот наконец-то
123 test
123 test
Спасибо!


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