Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 07.09.2011, 18:34
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Да, кстати, предполагается, что решение будет только с регулярками, без всяких callback-функций.
Ответить с цитированием
  #12 (permalink)  
Старый 07.09.2011, 18:37
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Есть один недочет. Не найдет такой код:
<nts:as asd jhg=321 asd:as=" ' asd:fake_attr " asd:as = ' " asd:fake_attr ' />

Но его легко поправить, поэтому я оставлю эту задачу для вас
Сообщение от Kolyaj
Да, кстати, предполагается, что решение будет только с регулярками, без всяких callback-функций.
Регулярка способна обработать за один раз - один тег. Без функции никак. Например с таким кодом можно:
string.replace(reg, function(){/* тут вся магия */});

Сообщение от Kolyaj
Давай начнём с простого, проверка правильности расстановки скобок одного типа.
Вот тут не понял, это что ещё за скобки и типы?
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 07.09.2011 в 18:40.
Ответить с цитированием
  #13 (permalink)  
Старый 07.09.2011, 18:46
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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

Я не сразу понял, какая у тебя задача. Как я понимаю, это выловить во входном потоки все теги? Вложенность будет проверять какой-то другой механизм.
Ответить с цитированием
  #14 (permalink)  
Старый 07.09.2011, 18:51
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Kolyaj
Ну ты сказал, что регулярками определишь вложенность тегов, скобки те же теги.
Понял.
Сообщение от Kolyaj
Как я понимаю, это выловить во входном потоки все теги?
Ну не просто выловить все теги, а ещё разобрать их на составляющие. Например, можно использовать для подсветки. Вложенность проверяется js-логикой, при нахождении очередного тега.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #15 (permalink)  
Старый 07.09.2011, 18:51
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

А чем плох простой?
Код:
/<("[^"]*"|'[^']'|[^>])+>/
UPD: понял, составляющие ещё нужны. Хотя проще, наверное, составляющие отдельно вытаскивать.
Ответить с цитированием
  #16 (permalink)  
Старый 07.09.2011, 19:01
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Kolyaj
А чем плох простой?
Ещё тем, что это найдет синтаксически сломанные теги. Получаются расхождения с парсерами браузеров. Хотя они тоже по-разному парсят, если синтаксис нарушен.
Сообщение от Kolyaj
Хотя проще, наверное, составляющие отдельно вытаскивать.
Ещё пятью регулярками и парой функций? Не думаю.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф
Ответить с цитированием
  #17 (permalink)  
Старый 07.09.2011, 19:13
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Пять простых регулярок лучше, чем одна сложная.
Ответить с цитированием
  #18 (permalink)  
Старый 07.09.2011, 20:41
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Сообщение от Kolyaj
Пять простых регулярок лучше, чем одна сложная.
Простыми не получится. Например, твоя регулярка упадет на этом:
<!--
<div asdasas="">
-->

Комментарии не должны обрабатываться. Ещё есть инлайновые скрипты, стили, так что...

Пока ехал домой, мысленно нашел несколько багов, завтра исправлю.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 07.09.2011 в 20:54.
Ответить с цитированием
  #19 (permalink)  
Старый 07.09.2011, 21:09
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Исправил баги:
/(?:<!--([\s\S]*?)-->)|(?:<!\[CDATA\[([\s\S]*?)\]\]>)|(?:<\/[\s\n\r]*([a-z\-_]+)(?::([a-z\-_]+))?[\s\n\r]*>)|(?:<[\s\n\r]*([a-z\-_]+)(?::([a-z\-_]+))?((?:[\s\n\r]+[a-z\-_]+(?::[a-z\-_]+)?[\s\n\r]*(?:=[\s\n\r]*(?:(?:"[^"]*")|(?:'[^']*')|(?:([^\s]+))))?)*)[\s\n\r]*(\/)?>)/gi

Сейчас всё должно быть тип топ. Только соответствующим образом нужно изменить регулярку по атрибутам.
__________________
Болтовня ничего не стоит. Покажите мне код. — Linus Torvalds
влад.куркин.рф

Последний раз редактировалось B~Vladi, 07.09.2011 в 21:11.
Ответить с цитированием
  #20 (permalink)  
Старый 16.11.2011, 17:05
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

А где может использоваться вся эта писанина?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написал часики для обратного отсчета. Подскажите где слажал t0xas Общие вопросы Javascript 14 26.09.2010 18:22
Написал скрипт,не работает bumero777 Ваши сайты и скрипты 4 08.07.2010 11:34
Написал функцию, а WebKit её не понимает Arkaim Events/DOM/Window 10 12.02.2010 18:03
Написал класс-обертку над xmlhttp, но он не работает почему то:( nolka4 AJAX и COMET 2 04.08.2009 20:53
Проблемы с приемом переменных через Java Script Kaaron jQuery 2 08.07.2009 03:27