Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.05.2013, 06:16
Аватар для Toki
Интересующийся
Отправить личное сообщение для Toki Посмотреть профиль Найти все сообщения от Toki
 
Регистрация: 13.05.2013
Сообщений: 11

Внутренние вхождения, рекурсия
Имеется такой скрипт
var str = 'sometext1 <b>sometext2 <b>sometext3</b> </b> sometext1';
str = str.replace(/\<b\>([\s\S]*)\<\/b\>/gim, function(match, contents, offset, s)
    {return "[b]"+contents+"[/b]";}
);
alert(str);

Должен заменять все вхождения в строку, включая внутренние вхождения, но почему-то отказывается и дело доходит только до первого вхождения.
Второй день и так и сяк, но не выходит.

Последний раз редактировалось Toki, 13.05.2013 в 06:19.
Ответить с цитированием
  #2 (permalink)  
Старый 13.05.2013, 06:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,501

Почему останаливается на первом?
Потому что жадные скобки ([\s\S]*) забирают все символы вплоть до последнего вхождения <\/b>.
Как сделать не жадными?
([\s\S]*?)
Но так всё равно не работает!
И не будет.
Что же делать?
Идти иным путём, так str.replace(/<(\/?b)>/gi, '[$1]') или как нить иначе.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 13.05.2013, 07:19
Аватар для Toki
Интересующийся
Отправить личное сообщение для Toki Посмотреть профиль Найти все сообщения от Toki
 
Регистрация: 13.05.2013
Сообщений: 11

Уже думал об этом, но почему-то все ассоциировал с php
имею в виду
$text = '<b>textasd</b>';
$text = preg_replace('<b>','[b]',$text);

При таком раскладе с видом страницей можно сильно похулиганить. Не будет ли каких либо эффектов с js'ом?
Ответить с цитированием
  #4 (permalink)  
Старый 13.05.2013, 07:52
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,501

Имеете ввиду прохождение левых тегов? Таки их надо экранировать напрочь все.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 13.05.2013, 08:22
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Toki
При таком раскладе с видом страницей можно сильно похулиганить
Ну ты ведь как умный разработчик знаешь правило, которое гласит "Не доверяй данным, приходящим от клиента" и будешь фильтровать данные на сервере, верно?
Ответить с цитированием
  #6 (permalink)  
Старый 13.05.2013, 09:40
Аватар для Toki
Интересующийся
Отправить личное сообщение для Toki Посмотреть профиль Найти все сообщения от Toki
 
Регистрация: 13.05.2013
Сообщений: 11

На счет прохождения не левых, а не парных тегов.
Сообщение от danik.js Посмотреть сообщение
Ну ты ведь как умный разработчик знаешь правило, которое гласит "Не доверяй данным, приходящим от клиента" и будешь фильтровать данные на сервере, верно?
Всё верно, по этому за php я спокоен.

В принципе, тему можно закрывать.
Всем спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсия в setInterval platedz Events/DOM/Window 8 03.02.2013 14:06
Рекурсия без циклов kilogram Серверные языки и технологии 1 21.04.2012 00:15
Рекурсия перезаписывает локальные переменные! Почему? salikoff Общие вопросы Javascript 5 31.03.2012 23:43
RegExp очень нужна рекурсия и ссылочность scuter Общие вопросы Javascript 9 18.08.2011 19:27
jQuery, функция animate(), рекурсия xintrea jQuery 12 03.01.2011 12:33