Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.05.2010, 15:27
Интересующийся
Отправить личное сообщение для goldmember Посмотреть профиль Найти все сообщения от goldmember
 
Регистрация: 22.02.2010
Сообщений: 15

Коварные RegExp'ы
Неужто результат выполнения регулярного выражения зависит от браузера? Например, мне нужно удалить все тэги в строке кроме тэга <br>
, делаю
var reg=/<\/?([^<(br)>]+)>/g;
	var result=obj.innerHTML.replace(reg,'');
Аппле(сафари) и лиса хавают, а осёл с оперой не интересует условие 'кроме', они все тэги удаляют. Мож. я пишу не стандартно или как?
Ответить с цитированием
  #2 (permalink)  
Старый 11.05.2010, 15:41
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Во-первых, "условие 'кроме'" у вас бредовое какое-то, читайте про символьные классы. Во-вторых, результат выполнения RegExp'а от браузера не зависит (кроме некоторых мелочей), а вот содержимое innerHTML в разных браузерах разное.
Ответить с цитированием
  #3 (permalink)  
Старый 11.05.2010, 15:52
Интересующийся
Отправить личное сообщение для goldmember Посмотреть профиль Найти все сообщения от goldmember
 
Регистрация: 22.02.2010
Сообщений: 15

Содержимое innerHTML не отличается, а как тогда этот бред вообще работает? Я так понимаю, бред вы увидели в том, что в этом условии подпаттерн присутствует? Ну хорошо, а наводку дать можете как сие реализуется?
Ответить с цитированием
  #4 (permalink)  
Старый 11.05.2010, 16:01
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от goldmember
в этом условии подпаттерн присутствует?
В символьном классе не может быть подпаттернов.

Сообщение от goldmember
Содержимое innerHTML не отличается
Проверяли?

Сообщение от goldmember
а наводку дать можете как сие реализуется?
С помощью функции замены.
Ответить с цитированием
  #5 (permalink)  
Старый 11.05.2010, 16:18
Интересующийся
Отправить личное сообщение для goldmember Посмотреть профиль Найти все сообщения от goldmember
 
Регистрация: 22.02.2010
Сообщений: 15

А вот и работает моя конструкция...Только надо было innerHTML.toLowerCase().replace делать, такая вот фича
Ответить с цитированием
  #6 (permalink)  
Старый 11.05.2010, 16:57
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от goldmember
А вот и работает моя конструкция...
var reg=/<\/?([^<(br)>]+)>/g;
    alert('<p>asdfasdf</p> <br> <b>asfaf</b> <strong>adfadfad </strong>'.replace(reg,''));
Ответить с цитированием
  #7 (permalink)  
Старый 11.05.2010, 17:12
Интересующийся
Отправить личное сообщение для goldmember Посмотреть профиль Найти все сообщения от goldmember
 
Регистрация: 22.02.2010
Сообщений: 15

Ну ХЗ, мою проблему решает, а с функциями замены я покаместне разобрался
Ответить с цитированием
  #8 (permalink)  
Старый 12.05.2010, 01:07
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

var t = '<div></div>fd<p>gdfg<br>dfgdfg<br />fdgdf</p>gd'.replace(/<\/?([^>]+)>/gi, function($1, $2) {
	return $2.toLowerCase().indexOf('br') ? '' : $1;
});

alert(t);
Ответить с цитированием
  #9 (permalink)  
Старый 13.05.2010, 14:27
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

var t = '<div></div>fd<p>gdfg<br>dfgdfg<br />fdgdf</p>gd'.replace(/<\/?([^>]+)>/gi, function($1, $2) {
    return $2.toLowerCase().indexOf('br') *!*!= -1*/!* ? '' : $1;
});
 
alert(t);
Ответить с цитированием
  #10 (permalink)  
Старый 13.05.2010, 16:39
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

e1f,
Сообщение от goldmember
удалить все тэги в строке кроме тэга <br>
Ответить с цитированием
Ответ



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

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