Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   И опять о "string". Как изменить строку согласно параметров... (https://javascript.ru/forum/misc/20640-i-opyat-o-string-kak-izmenit-stroku-soglasno-parametrov.html)

andreyua 12.08.2011 08:03

И опять о "string". Как изменить строку согласно параметров...
 
Есть строка: (будет разделена <BR>-ами в HTML, тут многострочная для наглядности):
"
[b][url=http://server1.com/file.txt.html]Скачать фaйл с сервера 1[/url][/b]

[b][url=http://server1.com/file2.txt.html]Скачать фaйл 2 с сервера 1[/url][/b]

[b][url=http://server3.com/file2.txt.html]Скачать фaйл 2 [url] [/url ]с сервера 2[/url][/b]

"

1. Нужно заменить все теги "url" на теги "leech", но только в правильных местах. (обратите внимание на 3-ю ссылку).
2. Нужно вставить ко всем ссылкам "server1.com" слово "_myserver.net".
Чтобы ссылки после этого выглядели так например:
Была такой
http://server1.com/file.txt.html
Стала такой
http://server1.com/file.txt_myserver.net.html

Помогите новичку плиз
Заменять URL на LEECH пытался вот этим , но это же не во всех случаях сработает :blink:
urllinks.replace(new RegExp("url",'g'),"leech")

devote 12.08.2011 08:26

urllinks.replace(/(\[(:?\/)?)url([\]=])/ig, '$1leech$3').replace(/(http:\/\/server1\.com)([^\]]+)(\.html\])/ig, '$1$2_myserver.net$3');

andreyua 13.08.2011 01:11

Спасибо за помощь...
Но я тут внесу маленькую поправку, "_myserver.net" нужно ставить вот так:
http://server1.com/file_myserver.net.txt.html , тоесть перед "html" и любым расширением файла.. (txt, js, info, wav... неважно)
Прошу извинить за неточность

andreyua 13.08.2011 03:10

Хм... Засел в Expresso и додул сам вроде
Нужно изменить
\.html\]
на
\.[^\.]*\.html]

Правильно, поправьте пожалуйста ?

devote 13.08.2011 06:02

и вообще в первом варианте я допустил ошибку, тоесть первый вариант может работать не совсем корректно вот новый:
urllinks.replace(/(\[(?:\/)?)url([\]=])/ig, '$1leech$2').replace(/(http:\/\/server1\.com)([^\]\.]+)((?:[^\s]+)?\.html\])/ig, '$1$2_myserver.net$3');

andreyua 13.08.2011 08:23

Ясно. С меня + снова...
А объясните пожалуйста в чем ошибка была, чтоб я тоже знал на будущее, а то щас вникаю в это все...

devote 13.08.2011 08:29

urllinks.replace(/(\[(?:\/)?)url([\]=])/ig, '$1leech$2')
я попутал вместо "незапоминающей скобки" сделал обратное перепутав местами знак : и ? тоесть эта ошибка могла привести к тому что заменялось бы даже то что выглядит например вот так:
[:/url]
а это не приемлемо, а если хошь понять регулярку вот чтиво


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