Javascript.RU

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

// Формируем переводы строк (<br />) игнорируя <pre>...</pre>.
str = str.replace(/(?!\<pre\>(.*?))\n((.*?)?!\1)/gim, "<br />");


Работает. Осталось по аналогии исключить списки и добавить такое поведение для параграфов.

upd:
Не работает >.<

Последний раз редактировалось ksevelyar, 21.11.2011 в 12:40.
Ответить с цитированием
  #12 (permalink)  
Старый 21.11.2011, 19:22
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

Почему такая конструкция работает: apple(?!y) — исключает appley, а такая (?!y)apple — нет (не исключает yapple)?

Каков аналог второй конструкции?
Ответить с цитированием
  #13 (permalink)  
Старый 21.11.2011, 19:39
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от ksevelyar
Каков аналог второй конструкции?
Это зависит от того, что вам нужно найти. Если y без apple - то так: y(?!apple). Если apple без y перед ней - то тут на помощь придут квадратные скобки: [^y]apple.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #14 (permalink)  
Старый 21.11.2011, 23:46
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

До сих пор бьюсь над задачей исключения блочных тегов из парсера.


Решил отказаться от регулярок (центральное «яблоко» всё равно заменяется в этом правиле):
str ="apple <pre>apple apple apple</pre> apple";
str = str.replace(/(?:^|[^(\<pre\>)])apple([^(\<\/pre\>)])/g, "sword");
alert(str);


И перейти к массиву. Сохранить все блочные элементы в массив, заменить из заглушками, обработать текст и вставить блоки обратно.

Но снова непонятности:

str ="<pre>apple</pre><pre>orange</pre>";

 blocks = /\<(h[1-6]|pre|div|ul|)\>([\s\S]*?)\<\/\1\>/gi;   

 i=0;
 var tmp_blocks = new Array();    
    
 str = str.replace(blocks, storeblocks);
 
 function storeblocks(x) {
          tmp_blocks[i] = x; 
          return "dummy"+i;
          i=i++;  
}

alert(str);


Почему счётчик не работает?
Ответить с цитированием
  #15 (permalink)  
Старый 21.11.2011, 23:50
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от ksevelyar
До сих пор бьюсь над задачей исключения блочных тегов из парсера.
Что этот ваш пресловутый парсер делает?
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #16 (permalink)  
Старый 21.11.2011, 23:53
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

Сообщение от trikadin Посмотреть сообщение
Что этот ваш пресловутый парсер делает?
Из наиболее важного — переводы строк и параграфы.

Странное поведение regexp
Ответить с цитированием
  #17 (permalink)  
Старый 21.11.2011, 23:59
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Вам нужно, чтобы теги <p> не расставлялись внутри других тегов?
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #18 (permalink)  
Старый 22.11.2011, 00:24
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

Сообщение от trikadin Посмотреть сообщение
Вам нужно, чтобы теги <p> не расставлялись внутри других тегов?
Мне нужно чтобы в заданных тегах (pre или заголовки, например) не проставлялись ни br ни p/p. Да и другие операции нежелательны, например удаление пустых строк.

Поэтому я хочу исключить их из парсера вообще.
Ответить с цитированием
  #19 (permalink)  
Старый 22.11.2011, 21:08
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Может, это вам поможет... Расставляет br-ки только вне скобок.

str="Bla-bla,\n<bla-bla-bla, <pre>bla-bla,\n bla-bla-bla</pre>, bla-bla\n, mr. Freeman";
alert(str.replace(/\n(?![^<]*?\<\/)/g, "<br>"));
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Странное поведение переменной mycoding Серверные языки и технологии 4 14.01.2011 19:18
Странное поведение jquery Ziki jQuery 3 02.12.2010 21:09
странное поведение innerhtml alexsum Общие вопросы Javascript 6 24.09.2010 16:17
DragAndDrop у гридов в плавающих окнах странное поведение PavelK ExtJS 0 29.07.2010 15:26
Странное поведение replace cooli0 Общие вопросы Javascript 4 25.01.2010 17:16