Коварные RegExp'ы
Неужто результат выполнения регулярного выражения зависит от браузера? Например, мне нужно удалить все тэги в строке кроме тэга <br>
, делаю var reg=/<\/?([^<(br)>]+)>/g; var result=obj.innerHTML.replace(reg,'');Аппле(сафари) и лиса хавают, а осёл с оперой не интересует условие 'кроме', они все тэги удаляют. Мож. я пишу не стандартно или как? |
Во-первых, "условие 'кроме'" у вас бредовое какое-то, читайте про символьные классы. Во-вторых, результат выполнения RegExp'а от браузера не зависит (кроме некоторых мелочей), а вот содержимое innerHTML в разных браузерах разное.
|
Содержимое innerHTML не отличается, а как тогда этот бред вообще работает? Я так понимаю, бред вы увидели в том, что в этом условии подпаттерн присутствует? Ну хорошо, а наводку дать можете как сие реализуется?
|
Цитата:
Цитата:
Цитата:
|
А вот и работает моя конструкция...Только надо было innerHTML.toLowerCase().replace делать, такая вот фича
|
Цитата:
var reg=/<\/?([^<(br)>]+)>/g; alert('<p>asdfasdf</p> <br> <b>asfaf</b> <strong>adfadfad </strong>'.replace(reg,'')); |
Ну ХЗ, мою проблему решает, а с функциями замены я покаместне разобрался
|
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); |
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); |
e1f,
Цитата:
|
Часовой пояс GMT +3, время: 14:27. |