regex бессмысленный и беспощадный
никак не получается составить регулярное выражение.
на входе есть какой-то текст с вкраплениями тегов и спец-символов. Что-то вроде: какойтотекст текст<div>фывап</div><div>уцекен &вапапв</div><div></div>блаблабла Задача: заменить на хекс-коды все символы которые лежат за пределами тегов и не являются спец-символами Регулярка для выбора тегов и спецсимволов простая: /<[^<]+>|&[^&]+;/g но ведь нужно то как раз наоборот :) а вот это уже никак не получается... кое-как удалось добиться выборки текста за пределами тегов: /(?!>).(?=([^>]*<))/g но как при этом еще игнорировать спец-символы? да еще и текст за пределами крайнего правого тега не попадает в результат. бьюсь над проблемой уже третий день. Похоже придется отказаться от регулярки и перебирать строку простым способом... а как было бы здорово.. text.replace(/супервыражение/g, function(char) { var code = char.charCodeAt(0); return '&#x' + code.toString(16) + ';'; }); |
лол
На правах бреда: 1. alert( unescape( escape( 'какойтотекст текст<div>фывап</div><div>уцекен &вапапв</div><div></div>блаблабла' ).replace( /%u([\dA-F]+)/g , '&#x$1;' ) ) ) 2. function convert(txt){ var t=e=true; var r=function(c){ if(c==='<')t=false; if(c==='&')e=false; if(t&&e)c='&#x'+c.charCodeAt(0).toString(16)+';'; if(c==='>')t=true; if(c===';')e=true; return c } return txt.replace(/./g,r) } alert( convert( 'какойтотекст текст<div>фывап</div><div>уцекен &вапапв</div><div></div>блаблабла' ) ) |
var str = 'какойтотекст текст<div>фывап</div><div>уцекен &вапапв</div><div></div>блаблабла'; alert(str.replace(/<[^>]+>|&[^;]+;|(.)/g, function(text, ch) { return ch ? '&#' + ch.charCodeAt().toString(16) + ';' : text; })); |
Мне было бы стыдно если бы не моё состояние). =)
|
я сегодня выпью за этого замечательного человека. Ну многое понять могу и понимаю, а как дело касается регулярных выражений - капец.
Большое спасибо за помощь! работает! (там только еще "х" добавить и будут хексы) |
..или убрать '.toString(16)' =)
|
Цитата:
Необходимое и достаточное чтение, чтобы не иметь проблем с регулярными выражениями. |
Цитата:
Спасибо. уже скачал и читаю. надеюсь закрыть эту тему раз и навсегда. |
Часовой пояс GMT +3, время: 14:19. |