Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Регулярное Выражение в HTML
 
 автор: Nigina   (06.03.2012 в 11:23)   письмо автору
49 Кб
 
 

У меня вот такой пример :

<style>
.highligt
{
background:#FF3;    
}
</style>

<script type="text/javascript">

  function stripHTML(string) {
    var pattern = new RegExp("\(Chocolate\)", "gi")
     var replaceWith = "<span class='highligt'>$1</span>"; 
         return string.replace(pattern, replaceWith);
      }

function testRegExp()
{
    var text = '<a target="_blank" href="blabla dot ru/wiki/Chocolate" title="Chocolate">Chocolate</a> Chocolate Chocolate';
    document.writeln(stripHTML(text));
}

В итоге он выделяет все совпадение, что приводит к разрушению.(скриншот RegExp.png)
Желательно пропустил совпадение внутри тега. Плизз Хелр ми.

  Ответить  
 
 автор: ЯСА   (06.03.2012 в 13:05)   письмо автору
 
   для: Nigina   (06.03.2012 в 11:23)
 

<script type="text/javascript">

  function stripHTML(string) {
    var pattern = new RegExp ('Chocolate(?!")', 'gi')
    var arr = pattern.exec (string);

     var replaceWith = "<span class='highligt'>" + arr + "</span>"; 

         return (string.replace (pattern, replaceWith));
      }

function testRegExp()
{
    var text = '<a target="_blank" href="blabla dot ru/wiki/Chocolate" title="Chocolate">Chocolate</a> Chocolate Chocolate';
    document.writeln (stripHTML (text));
}
testRegExp()
</script>

  Ответить  
 
 автор: Nigina   (06.03.2012 в 14:23)   письмо автору
 
   для: ЯСА   (06.03.2012 в 13:05)
 

ЯСА, огромное спс ! В этом примере работает отлично!

  Ответить  
 
 автор: Nigina   (06.03.2012 в 16:15)   письмо автору
54.5 Кб
 
   для: ЯСА   (06.03.2012 в 13:05)
 

на этом примере:
var text = '<a target="_blank" href="blabla dot org"  title="Шоколад (значения)">Шоколад (значения)</a>';

(см. скриншот)
не работает, в чем проблема?

  Ответить  
 
 автор: elenaki   (06.03.2012 в 18:30)   письмо автору
 
   для: Nigina   (06.03.2012 в 16:15)
 

utf-8?

  Ответить  
 
 автор: ЯСА   (06.03.2012 в 18:41)   письмо автору
 
   для: Nigina   (06.03.2012 в 16:15)
 

Проблема - в понимании/непонимании вами механизма регулярных выражений.

Ищется слово, сразу за которым НЕТ двойной кавычки.
В примере с Chocolate для этого и прописано Chocolate(?!")

А в примере с Шоколад в атрибутах тега <A> после слова следует не двойная кавычка, а пробел и за ним слово значения в круглых скобках.
Если будете выделять спанами всю конструкцию Шоколад (значения), то всё будет работать. А отдельно Шоколад - не будет.
Ферштейн?
-----

Сначала вам захотелось найти и выделить одно слово.
Теперь вам хочется выделить не всю конструкцию, а часть её.
Завтра вам захочется выделять одну заглавную букву...

Поймите, что RegExp ищет чёткие совпадения, которые можно ТОЧНО описать.
И, к сожалению, в Javascript'e поддерживаемый механизм регулярки очень слабенький.
Конструкций "заглядывания вперёд", как в Perl и PHP, в Javascript'e просто НЕТ.

  Ответить  
 
 автор: Nigina   (06.03.2012 в 19:11)   письмо автору
 
   для: ЯСА   (06.03.2012 в 18:41)
 

Спс, ЯСА, да теперь все понятно в чем проблема. Я с RegExp-ом на Вы. Наверно изначально не правильно задала вопрос, надо игнорировать все что внутри тега <A> (href, title, id, class ...). Пробовала селекторами игнорировать <a>, результат 0. Может скинете идею?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования