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, время: 00:28. |