Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.12.2011, 01:45
Аспирант
Отправить личное сообщение для syegorius Посмотреть профиль Найти все сообщения от syegorius
 
Регистрация: 28.08.2010
Сообщений: 91

регулярные выражения
Доброе время суток!

Пожалуйста подскажите в чем может быть проблема. Есть <div contenteditable=true>, навсякий случай заменяю в нем '&nbsp;'
на ' ' и убираю перенос строки. Его содержимое (например, 'bla-bla-bla hello bla-bla-bla') получаю таким способом $('div').html(), далее ищу в нем кусок текста например 'hello'. Все это выглядит так:

var html=$('div').html().replace(/<\s*br[^>]*>/,'').replace(/(\&nbsp;)+|([\s])+/ig,' ');
var re=new RegExp(clearREChars(hello));//hello='hello bla'

if(html.match(re)){myCode()}//вот тут и начинается проблема.

function clearREChars(str){
    var chars=new Array('\\^','\\$','\\\\','\\/','\\*','\\+','\\?','\\|','\\(','\\)','\\[', '\\]','\\{', '\\}'),replacements=new Array('\\^','\\$','\\\\','\\/','\\*','\\+','\\?','\\|','\\(','\\)','\\[', '\\]','\\{', '\\}')
    return RELoop(chars,replacements,str);//вернет строку с заменнеными символами
}


В случае если мой див будет содержать bla-bla-bla hello bla-bla-bla, а я буду в нем искать строку 'hello bla', то она найдется нормально, причем, чтоб ее найти можно сделать вообще вот так if(html.match('hello bla'))

Но попробовал что бы в нем было что-то посерьезней например:

`Hel<div>l</div>o <span id="esui0" class="bold">a<span id="esui1" class="underline">mig</span>o</span>) $(this).hasClass('undo') ss!$(this).hasClass('undo') !$(this).hasClass('undo')`,

причем $(this).hasClass('undo') ss!$(this).hasClass('undo') !$(this).hasClass('undo') - это не яваскрип код, а тоже текст внутри дива.

И во всем этом я хочу попробовать найти строку '$(this).'. Она не находится как бы я ее не пытался найти - ни так html.match('$(this).'), ни так html.match(new RegExp(clearREChars('$(this).'))), ни даже если составить вот такое регулярное выражение (если вдруг внури какая-то часть будет внутри тега):

/(<[^>]*>)*[\\$](<[^>]*>)*[\(](<[^>]*>)*[t](<[^>]*>)*[h](<[^>]*>)*[i](<[^>]*>)*[s](<[^>]*>)*[\)](<[^>]*>)*[.](<[^>]*>)*/

Подскажите в чем может быть проблема. Заранее очень благодарен за ответы!

P.S. последнее регулярное выражение вывел алертом. Создал его так:

var selectedText = '$(this).',html = "Hel<div>l</div>o <span id=\"esui0\" class=\"bold\">a<span id=\"esui1\" class=\"underline\">mig</span>o</span>) $(this).hasClass('undo') ss!$(this).hasClass('undo') !$(this).hasClass('undo')"

for(i=0;i<selectedText.length;i++)re+='['+clearREChars(selectedText[i])+']'+'(<[^>]*>)*'
m=html.match(new RegExp(re));alert(re)


и там почему-то [\\$], а не [\$], хотя экранируется $ так же как и все остальные символы, но вместо "(" выводит "\(".
Почему выводятся [\\$] с двумя слешами?

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

все, кажется вопрос решен!
Ответить с цитированием
  #3 (permalink)  
Старый 31.12.2011, 19:29
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Если что не так, извините. С RexExp знаком буквально два-три дня
var x = "Hel<div>l</div>o <span id=\"esui0\" class=\"bold\">a<span id=\"esui1\" class=\"underline\">mig</span>o</span>) $(this).hasClass('undo') ss!$(this).hasClass('undo') !$(this).hasClass('undo')";
var z = /\$\(this\)\./g;
var f = null;

while((f = z.exec(x)) != null) {
	alert(f.index); // позиция вхождения
}
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения [MI_nor] Общие вопросы Javascript 2 05.12.2011 02:55
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 01:08
Регулярные выражения klin Javascript под браузер 5 20.07.2010 14:48
Регулярные выражения maket Общие вопросы Javascript 3 19.07.2010 22:32
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35