Показать сообщение отдельно
  #10 (permalink)  
Старый 02.12.2011, 00:15
Аспирант
Отправить личное сообщение для syegorius Посмотреть профиль Найти все сообщения от syegorius
 
Регистрация: 28.08.2010
Сообщений: 91

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

по поводу отрицания слова, то мне это нужно потому что я не раз уже сталкивался с этим, столкнулся сегодня и думаю, что еще не раз столкнусь и иногда просто не вижу другого способа создать регулярное выражение кроме как не отрицанием именно не символа, а целого слова!

ну а теперь собственно о новой проблеме:

есть вот такой код:

var is=1
var string='Hello <span id="esui0" class="bold">a<span id="esui0" class="underline">mig</span>o</span>)<span class="inactive" id="anchor1"></span>some text<span class="some-class">and some text</span><span class="inactive" id="anchor0"></span>';
var enteredREN=new RegExp('(^.*anchor'+(is-1)+'[^>]*></span>)(.*)(<span.*anchor'+is+'.*$)','ig');
var enteredRENN=new RegExp('(^.*anchor'+is+'[^>]*></span>)(.*)(<span.*anchor'+(is-1)+'.*$)','ig');
var entered=string.replace(enteredREN,'$2');
if(entered!=='')entered=cHtml.replace(enteredRENN,'$2');


задача - нужно получить содержимое которое находится между span#anchor0 и span#anchor1, причем span#anchor1 может быть как после span#anchor0 так и перед, плюс между ними может быть не только текст но и теги.

как видите выше одно регулярное выражение написано для случая когда span#anchor1 после span#anchor0, а второе - когда перед.
но если последовательность span#anchor1 после span#anchor0, то когда происходит первая проверка, она возвращает всю строку, и вторая проверка не срабатывает.

скажите можно ли как-то это обойти, но без добавление в условие проверки if(entered!=='') entered==string, то есть что бы если не найдено то что я ищу возвращалась не проверяемая строка, а false или null
Ответить с цитированием