Deff, да я сам рад, что и у меня хоть что-то стало получаться с этими регулярками... :D
Уш дюже прикольно они выглядят для неискушенного взгляда. Чистая галиматья! Но поражает их возможноть действия. |
ast_ross,
Проще(и удобнее, поскольку можно наращивать) создать массив проверочных слов далее в цикле создавать из массива регеспы и тестить строку в цикле - Типовая задача - проверка на цензуру сообщений и вывод слов замены |
Цитата:
Цитата:
|
видимо я кривой или что??? Не работает эта регулярка во втором случае... что делать...
var s='начало<p>Короткометражки с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.</p>'; var val='Коротком'; var r=new RegExp('^(<[^>]+>)?('+val+')',''); alert(s.replace(r,'$1($2)')); var s='<p><b>Короткометражки</b> с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.</p>'; alert(s.replace(r,'$1($2)')); |
ну кто нибудь подкиньте регулярку удовлетворяющую условию <p> или <p><b> или сколь угодно html тегов пробовал <\/?\w[^>]*> не работает
|
кто пояснит почему в $1 содержится только <i> а не <p><b></b><i>
var s='<p><b></b><i>Короткометражки</i> с ориентацией на классику немой комедии, первая из которых была номинирована на «Золотую пальмовую ветвь» в Каннах.</p>'; var val='Коротком'; var r=new RegExp('^(<[^>]+>){1,}?('+val+')',''); alert(s.replace(r,'$1($2)')); |
ast_ross,
Выразите точно условия |
Нужно заменить часть строки на такую же, только с оберткой типа
<span class='highlight'>mytext</span>в случае если текст начинается с искомой строки. При этом необходимо проигнорировать (если они имеются) теги html. Т.е. к примеру искомое слово ко: Вариант 1: <!-- исходный текст: --> Короткометражки с ориентацией на классику немой комедии. <!-- после обработки: --> <span class='highlight'>Ко</span>роткометражки с ориентацией на классику немой комедии. Вариант 2: <!-- исходный текст: --> <p><b>Короткометражки</b> с ориентацией на классику немой комедии.</p> <!-- после обработки: --> <p><b><span class='highlight'>Ко</span>роткометражки</b> с ориентацией на классику немой комедии.</p> Вариант 3: (ничего не изменится так не начинается на "ко") <!-- исходный текст: --> <p>Новые <b>короткометражки</b> с ориентацией на классику немой комедии.</p> <!-- после обработки: --> <p>Новые <b>короткометражки</b> с ориентацией на классику немой комедии.</p> Вариант 4: (посложнее) <!-- исходный текст: --> <p><b>К</b>ороткометражки с ориентацией на классику немой комедии.</p> <!-- после обработки: --> <p><span class='highlight'><b>К</b>о</span>роткометражки с ориентацией на классику немой комедии.</p> <!-- после обработки: (другой вариант) --> <p><b><span class='highlight'>К</span></b><span class='highlight'>о</span>роткометражки с ориентацией на классику немой комедии.</p> Все эти варианты должны быть описаны одной регуляркой. Ну и то же самое только для условия "заканчивается на". |
function transF(str){ return str.replace(/^(<p>)?(<b>)(Ко(?!<))|(<b>К<\/b>о|Ко)/gm,'$1$2<span class="highlight">$3$4</span>'); } alert(transF('<p><b>Короткометражки</b> с ориентацией на классику немой комедии.</p>')); alert(transF('<p><b>К</b>ороткометражки с ориентацией на классику немой комедии.</p>')); alert(transF('Короткометражки с ориентацией на классику немой комедии.')); alert(transF('<p>Новые <b>короткометражки</b> с ориентацией на классику немой комедии.</p>')); |
я вижу что в регулярке жестко указанны варианты тегов и их вариации, а можно ли составить так что бы не имело значение ни то какие теги и какое их количество идет перед текстом?
|
Часовой пояс GMT +3, время: 19:49. |