Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ПРОБЛМА С RegEXP (https://javascript.ru/forum/misc/24627-problma-s-regexp.html)

nerv_ 08.01.2012 17:22

Цитата:

Сообщение от monolithed
главное чтобы было от чего оттолкнуться

Хороший пример, спасибо :) Кажется, улавливаю логику: чтобы найти что-то перед чем стоит определенный символ, надо искать не этот символ, а то, что следует за ним.
Позволил себе немного изменить Ваш пример
var x = "foo|bar";
var z = /(?=\w+$)/;

var w = x.replace(z, "="); // находит позицию после "|" и вставляет туда символ

alert(w);

Livaanderiamarum 08.01.2012 17:35

чтобы найти что-то перед чем стоит определенный символ, надо искать не этот символ, а то, что следует за ним.
_______
а я не улавливаю логики..........
попробуй сделай это с поиском ссылок вида

www.youtube.com чтобы ссылка отделялась от остального текста пробелами при том заменялась ссылкой www.google.com при том пробелы слева и справа ссылки оставались бы нетронутыми

вот в этой строке

"www.youtube.com блаwww.youtube.com бла www.youtube.com"

Livaanderiamarum 08.01.2012 17:36

п.с. парсер сайта ссылки уже зпарсил смотрю) лол не обращай на это внмания

monolithed 08.01.2012 17:40

Цитата:

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

var text = 'папра 5 foo|bar 54 тиапт апк4';
alert(text.replace(RegExp(text.match(/\|(\w+\b)/)[1]), 'foo'));

Livaanderiamarum 08.01.2012 17:43

аа!!!!! все прозрел)))!!!!!

[1] обращение к свойству регулярки возвращает уже не саму регулярку а скобочную группу)))) спасибо))!
я забл что мы точку используем и к свойству обращаемся)))

nerv_ 08.01.2012 18:28

Livaanderiamarum, как понял
// Задача заменить youtube.com в середине строки так, чтобы пробелы слева и справа оставались не тронутыми
var x = "youtube.com бла youtube.com бла youtube.com";
var z = /(?!^)youtube.com(?= )/g;
var w = x.replace(z, "google.com");
alert(w);

var x = "папра 5 foo|bar 54 тиапт апк4";
var z = /(?! )[a-z]+(?= )/g
var w = x.replace(z, "foo");
alert(w);

Livaanderiamarum 08.01.2012 18:58

Цитата:

Сообщение от nerv_ (Сообщение 148907)
Livaanderiamarum, как понял
// Задача заменить youtube.com в середине строки так, чтобы пробелы слева и справа оставались не тронутыми
var x = "youtube.com бла youtube.com бла youtube.com";
var z = /(?!^)youtube.com(?= )/g;
var w = x.replace(z, "google.com");
alert(w);

Не, задача заменить ВСЕ ютьюбы)) я специально сделал их в разных местах в разных условиях)

nerv_ 08.01.2012 19:05

Цитата:

Сообщение от Livaanderiamarum
Не, задача заменить ВСЕ ютьюбы

Тогда еще проще
// Задача заменить все youtube.com так, чтобы пробелы слева и/или справа оставались не тронутыми
var x = "youtube.com бла youtube.com бла youtube.com";
var z = /youtube.com/g;
var w = x.replace(z, "google.com");
alert(w);

Livaanderiamarum 08.01.2012 19:23

блин тогда так)
1) заменить все ССЫЛКИ на ютьюб, словом "НННЯЯЯ"
2) при том чтобы пробелы слева и справа от них остались нетронутыми
3) при том что длинны ссылок могут быть разные
4) при том что слова и знаки не могут касаться наших ссылок ни справа ни слева. только пробелы могут их касаться, иначе ссылка не считается ссылкой.

вот строка


"youtube.com/wacht?fdfg^%fgdghd745u76GHkGKGHK&8^56756*?fgd=fgdg бла youtube.com/fgdgdf?:fdgfd+пав=*?а бла youtube.com.апвпав*?=fg";


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