Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помощь с replace - работает только 1 раз (https://javascript.ru/forum/misc/44907-pomoshh-s-replace-rabotaet-tolko-1-raz.html)

daranger 06.02.2014 10:38

Помощь с replace - работает только 1 раз
 
Речь идёт не о /\+/g вроде как бы про данный флаг я понял.

Немного видоизменяю ссылки с парсинга ютюба.
код:
video_link = response.data.items[i].title.replace('/', '-'); //заменяю слеш на дефис
далее все пробелы хочу заменить на дефис
делаю это так
video_link = response.data.items[i].title.replace(/\ /g, '-');
но работает только что написано выше.
а ещё мне нужно удалить все лишние символы скобки, точки, запятые и т.д.
но пока что не допёр как, подскажите!)

рони 06.02.2014 10:42

Цитата:

Сообщение от daranger
все пробелы хочу заменить на дефис

Цитата:

\s Найдет любой пробельный символ, включая пробел, табуляцию, переводы строки и другие юникодные пробельные символы. Например, /\s\w*/ найдет ' bar' в "foo bar."
http://javascript.ru/RegExp

ksa 06.02.2014 11:10

Цитата:

Сообщение от daranger
Немного видоизменяю ссылки с парсинга ютюба.
код:
video_link = response.data.items[i].title.replace('/', '-'); //заменяю слеш на дефис

далее все пробелы хочу заменить на дефис
делаю это так
video_link = response.data.items[i].title.replace(/\ /g, '-');

но работает только что написано выше.

Делай все разом

var val='111 222/333';
alert(val.replace(/\s|\//g,'-'));

ksa 06.02.2014 11:12

Цитата:

Сообщение от daranger
а ещё мне нужно удалить все лишние символы скобки, точки, запятые и т.д.
но пока что не допёр как, подскажите

Как вариант...

var val='111.222,333(444)';
alert(val.replace(/[.,()]/g,''));

daranger 06.02.2014 11:41

Спасибо большое, разобрался, то что нужно, в дополнение подскажите как удалить повторяющиеся дефисы и дефисы вначале и в конце:)

daranger 06.02.2014 12:26

Всем спасибо, тему можно закрывать, последнее решил так:
video_link = video_link.replace(/(^\-*)|(\-*)$/g, ''); //удаляем дефис вначале и в конце
video_link = video_link.replace(/\-+/g,"-"); //удаляем повторяющиеся дефисы

melky 06.02.2014 13:57

Цитата:

Сообщение от daranger (Сообщение 296247)
Всем спасибо, тему можно закрывать, последнее решил так:
video_link = video_link.replace(/(^\-*)|(\-*)$/g, ''); //удаляем дефис вначале и в конце
video_link = video_link.replace(/\-+/g,"-"); //удаляем повторяющиеся дефисы

Символ "-" обретает свою силу внутри диапазона. В иных случаях экранировать не нужно :)

Это - не диапазоны.
alert( '1---2'.replace(/-+/g, "-") );
alert( '1---2'.replace(/[-]+/g, "-") );
alert( '1-,-2'.replace(/[,-]+/g, "-") );


15.10.2.16, Примечание 3.

kostyanet 06.02.2014 19:21

Возможно изобретать ничего не надо https://github.com/YePpHa/YouTubeCenter/wiki/Features


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