Показать сообщение отдельно
  #1 (permalink)  
Старый 19.02.2011, 16:05
Новичок на форуме
Отправить личное сообщение для kostysh Посмотреть профиль Найти все сообщения от kostysh
 
Регистрация: 21.11.2010
Сообщений: 9

regex бессмысленный и беспощадный
никак не получается составить регулярное выражение.

на входе есть какой-то текст с вкраплениями тегов и спец-символов. Что-то вроде:

какойтотекст текст<div>фывап</div><div>уцекен&nbsp; &amp;вапапв</div><div></div>блаблабла

Задача: заменить на хекс-коды все символы которые лежат за пределами тегов и не являются спец-символами

Регулярка для выбора тегов и спецсимволов простая: /<[^<]+>|&[^&]+;/g но ведь нужно то как раз наоборот а вот это уже никак не получается...

кое-как удалось добиться выборки текста за пределами тегов: /(?!>).(?=([^>]*<))/g но как при этом еще игнорировать спец-символы? да еще и текст за пределами крайнего правого тега не попадает в результат.

бьюсь над проблемой уже третий день. Похоже придется отказаться от регулярки и перебирать строку простым способом... а как было бы здорово..
text.replace(/супервыражение/g, function(char) {
    var code = char.charCodeAt(0);
    return '&#x' + code.toString(16) + ';';
});

Последний раз редактировалось kostysh, 19.02.2011 в 16:08.
Ответить с цитированием